新闻中心

如何利用js脚本制作动态菜单_js动态下拉菜单脚本编写与效果展示

2025-11-04
浏览次数:
返回列表
使用HTML构建菜单结构,CSS设置样式并隐藏子菜单,J*aScript通过事件监听实现点击展开与收起功能,结合classList和过渡效果可提升交互体验。

如何利用js脚本制作动态菜单_js动态下拉菜单脚本编写与效果展示

实现一个动态下拉菜单并不复杂,只需要基础的 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 BrandCrowd

一个在线Logo免费设计生成器

BrandCrowd 200 查看详情 BrandCrowd
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.display 更优雅
  • 添加过渡效果:在 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了  虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画 

搜索