新闻中心
如何利用js脚本制作动态菜单_js动态下拉菜单脚本编写与效果展示
使用HTML构建菜单结构,CSS设置样式并隐藏子菜单,J*aScript通过事件监听实现点击展开与收起功能,结合classList和过渡效果可提升交互体验。

实现一个动态下拉菜单并不复杂,只需要基础的 HTML、CSS 和 J*aScript 即可完成。下面详细介绍如何编写一个简洁高效的 J*aScript 动态下拉菜单,并附上完整代码与效果说明。
1. 菜单结构设计(HTML)
首先搭建基本的 HTML 结构,使用无序列表 ul 和列表项 li 构建菜单层级:
<div class="menu-container">
<ul class="main-menu">
<li>
<span class="menu-title">产品</span>
<ul class="sub-menu">
<li><a href="#">手机</a></li>
<li><a href="#">平板</a></li>
<li><a href="#">笔记本</a></li>
</ul>
</li>
<li>
<span class="menu-title">服务</span>
<ul class="sub-menu">
<li><a href="#">技术支持</a></li>
<li><a href="#">在线客服</a></li>
</ul>
</li>
</ul>
</div>
2. 样式美化(CSS)
通过 CSS 控制菜单外观和隐藏/显示状态。子菜单默认隐藏,鼠标悬停或点击时再展示。
.menu-container {
width: 200px;
font-family: Arial, sans-serif;
}
<p>.main-menu > li {
position: relative;
}</p><p>.menu-title {
display: block;
padding: 10px;
background-color: #333;
color: white;
cursor: pointer;
text-align: left;
}</p><p>.menu-title:hover {
background-color: #555;
}</p><p>.sub-menu {
display: none; /<em> 默认隐藏 </em>/
list-style: none;
margin: 0;
padding: 0;
background-color: #f4f4f4;
border-left: 3px solid #007acc;
}</p><p>.sub-menu li a {
display: block;
padding: 8px 12px;
text-decoration: none;
color: #333;
font-size: 14px;
}</p><p>.sub-menu li a:hover {
background-color: #ddd;
}</p>3. 动态交互控制(J*aScript)
使用 J*aScript 添加点击或悬停事件,实现子菜单的展开与收起。
以下是基于点击触发的 JS 脚本:
BrandCrowd
一个在线Logo免费设计生成器
200
查看详情
document.querySelectorAll('.menu-title').forEach(title => {
title.addEventListener('click', function(e) {
// 获取对应的子菜单
const subMenu = this.nextElementSibling;
<pre class='brush:php;toolbar:false;'>// 切换显示状态
if (subMenu.style.display === 'block') {
subMenu.style.display = 'none';
} else {
subMenu.style.display = 'block';
}
// 可选:关闭其他已打开的菜单
document.querySelectorAll('.sub-menu').forEach(menu => {
if (menu !== subMenu) {
menu.style.display = 'none';
}
});}); });
如果你希望用鼠标悬停代替点击,只需将 'click' 改为 'mouseenter',并配合 CSS 的 :hover 使用,或者在 JS 中统一管理移入移出事件。
4. 效果增强建议
让菜单更流畅自然,可以加入以下优化:
- 使用 classList.toggle() 配合 CSS 过渡动画,比直接操作 style.d
isplay 更优雅 - 添加过渡效果:在 CSS 中设置 max-height + overflow: hidden + transition 实现滑动展开
- 移动端适配:考虑点击穿透问题,避免误触
- 可访问性:支持键盘导航(Tab、Enter 键控制展开)
例如,用类控制显示:
// CSS
.sub-menu.active {
display: block;
}
<p>// JS 修改部分
title.addEventListener('click', function() {
const subMenu = this.nextElementSibling;
subMenu.classList.toggle('active');
});</p>基本上就这些。一个功能完整、样式清晰的动态下拉菜单就可以轻松实现。关键是结构清晰、事件绑定准确、样式控制得当。根据项目需求,还可以扩展多级菜单、异步加载菜单数据等高级功能。
以上就是如何利用js脚本制作动态菜单_js动态下拉菜单脚本编写与效果展示的详细内容,更多请关注其它相关文章!
# 文本框
# 仙游网络营销推广方案
# 宠物网站建设策划报告
# 小程序优化seo
# 小店推广营销策略
# 南通推广网站建设哪家好
# 宣城网站优化推广报价
# 宁海宁波网站推广
# 吐鲁番爱采购seo排名
# 鞍山本地网站优化
# 孝感 商务 网站建设
# 鼠标
# 还可以
# 如果你
# 未接
# 道中
# js脚本制作教程
# 何为
# 加载
# 弹出
# 背景色
# ov
# 移动端适配
# 异步加载
# ai
# 平板
# ssl
# js
# html
# java
# javascript
# css
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Win11怎么设置鼠标主按键_Win11鼠标左右键功能互换
Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性
Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法
Python多线程中正确使用sigwait处理SIGALRM信号
打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门
J*a应用程序首次运行自动创建文件与目录的最佳实践
Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】
Win11怎么开启高性能模式_Windows 11电源计划优化设置
12306几点到几点不能订票? | 官方最新系统维护时间全解析
Eclipse怎么运行工程_Eclipse工程运行配置说明
Angular中单选按钮的正确使用与常见陷阱解析
天猫双十一预售商品怎么退款_天猫双十一预售退款操作指南
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
Angular Material 垂直步进器:实现底部到顶部排序的教程
c++如何实现单例设计模式_c++线程安全的单例模式写法
Lar*el 8 多关键词数据库搜索优化实践
不同用户不同价格! 索尼开启账户个性化定价测试
在WordPress中通过REST API获取BasicAuth保护的远程文章
小红书网页版入口链接分享 小红书官网直接进
C++如何生成随机数_C++ random库使用方法与范围设置
Archive of Our Own官网直达 AO3最新可用地址一览
2026年CSGO开箱网站推荐 CSGO开箱平台精选
如何在J*a中使用Locale处理多语言环境
夸克AO3官网入口_AO3镜像网站2025推荐
Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法
谷歌浏览器如何快速清除某个网站的数据_Chrome网站缓存清理方法
星露谷物语官网入口 星露谷物语游戏官网入口
163邮箱注册官网 免费申请163个人邮箱
厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新
生成rdflib自定义SPARQL函数:参数匹配与实践指南
腾讯QQ邮箱官方网站_QQ邮箱网页版在线登录
Mac怎么使用表情符号_Mac Emoji快捷键面板
如何更改在 Excel 中打开超链接时的默认浏览器
Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略
在Typer应用中优雅地处理和重组任意命令行参数
Golang如何实现Web接口签名验证_Golang Web接口签名校验开发方法
限制HTML日期输入框的日期选择范围
Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程
Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量
J*aScript对象创建方式_J*aScript设计模式应用
“在文档元素之后找到了标记”是什么错误? 检查并修复XML中多个根元素的3个方法
PostgreSQL海量数据高效导入策略:Python与Django实践指南
b站怎么取消点赞_b站点赞取消操作方法
Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】
C++20的source_location是什么_C++在编译期获取源码位置信息用于日志和断言
微博网页版首页入口 微博电脑端官网登录链接
在python-socketio事件处理器中安全访问Flask应用上下文
age动漫网站入口 age动漫官网直接访问入口
《GTA6》开发画面疑似泄露!这次可不是AI了
虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画


2025-11-04
浏览次数:次
返回列表
isplay 更优雅