新闻中心
J*aScript:点击锚点链接关闭下拉菜单并切换 Hamburger 状态

本文旨在解决在单页应用或网页中,点击下拉菜单中的锚点链接时,菜单不自动关闭的问题。我们将通过 J*aScript 代码,监听锚点链接的点击事件,实现点击后关闭菜单并切换 Hamburger 图标状态,从而优化用户体验。
在网页开发中,下拉菜单是一种常见的导航方式。但当下拉菜单中包含指向页面内部锚点的链接时,用户点击这些链接后,菜单往往不会自动关闭,这会影响用户体验。本文将介绍如何使用 J*aScript 监听锚点链接的点击事件,实现点击后自动关闭菜单并切换 Hamburger 图标状态。
解决方案
核心思路是:
- 获取下拉菜单中所有锚点链接元素。
- 为每个锚点链接添加点击事件监听器。
- 在点击事件处理函数中,关闭下拉菜单并切换 Hamburger 图标的 change class。
以下是具体的代码实现:
var hamburger = document.getElementById('hamburger'); var menu = document.getElementById('n*bar--middle'); menu.style.display = "none"; hamburger.addEventListener('click', function() { this.classList.toggle("change"); if (menu.style.display === "none") { menu.style.display = "block"; } else { menu.style.display = "none"; } }); // 获取所有锚点链接 var anchors = document.querySelectorAll('.n*-contents > a'); // 遍历锚点链接,添加点击事件监听器 anchors.forEach(item => { item.addEventListener('click', () => { // 关闭菜单 menu.style.display = "none"; // 切换 Hamburger 图标状态 hamburger.classList.toggle("change"); }); });
代码解释:
小爱开放平台
小米旗下小爱开放平台
291
查看详情
- document.querySelectorAll('.n*-contents > a'): 使用 querySelectorAll 方法获取所有 class 为 n*-contents 的元素下的所有 a 标签(锚点链接)。请根据你的 HTML 结构调整选择器。
- anchors.forEach(item => { ... }): 遍历所有获取到的锚点链接。
- item.addEventListener('click', () => { ... }): 为每个锚点链接添加点击事件监听器。
- menu.style.display = "none";: 设置菜单的 display 属性为 none,从而关闭菜单。
- hamburger.classList.toggle("change");: 切换 Hamburger 图标的 change class,实现 Hamburger 图标的切换效果。
HTML 结构示例:
<div class="n*bar--middle n*bar-hide" id="n*bar--middle">
<div style="height: 50px;"></div>
<div class="n*-contents"><a class="about" href="#about-us">About us</a></div>
</div>
<div class="n*bar--right">
<div class="hamburger" id="hamburger">
<div class="icon1"></div>
<div class="icon2"></div>
<div class="icon3"></div>
</div>
</div>
<h2 id="about-us">About Us</h2>
<p>...</p>CSS 样式示例:
.n*bar--middle {
display: none;
/* 其他样式 */
}
.hamburger {
/* 其他样式 */
}
.change .icon1 {
/* Hamburger 图标切换后的样式 */
}
.change .icon2 {
/* Hamburger 图标切换后的样式 */
}
.change .icon3 {
/* Hamburger 图标切换后的样式 */
}注意事项
- 确保 J*aScript 代码在 HTML 元素加载完毕后执行,可以将代码放在
以上就是J*aScript:点击锚点链接关闭下拉菜单并切换 Hamburger 状态的详细内容,更多请关注其它相关文章!
# 显示效果
# 掇刀区公司网站建设价格
# seo 检测链接
# 淄博做网站建设的公司
# 寄生虫seo教程帖子
# 广州seo服务优化收费
# 金融产品营销推广方法
# 优化网站廉价易.速达
# 宁波网站建设备案
# 短视频营销过重无法推广
# 个人网站建设服务号查询
# 放在
# 是一种
# css
# 菜单中
# 选择器
# 单选框
# 遍历
# 自动关闭
# 表单
# 小爱
# 点击事件
# ssl
# html
# java
# javascript
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
处理嵌套交互式控件:前端可访问性指南
HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解
使用Pandas转换并合并DataFrame:多列映射至统一结构
高德地图公交到站提醒失败如何解决 高德提醒权限设置
J*aScript中如何高效提取对象指定属性
TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法
sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程
Go语言中JSON数据解码与字段访问指南
sublime如何只显示或隐藏特定类型文件_sublime侧边栏文件过滤
解决Python logging 中 datefmt 导致时间戳固定不变的问题
蛙漫官网漫画入口地址_蛙漫在线畅读无广告弹窗
Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示
使用CSS更改登录屏幕输入框中PNG图标颜色的策略与局限性
vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法
J*a递归快速排序中静态变量导致数据累积的陷阱与解决方案
Composer如何处理Git子模块(submodule)依赖_Composer与Git Submodule的对比与选择
如何在Promise链中有效终止错误处理后的执行
初次安装JDK时环境变量如何正确配置_J*A_HOME与PATH设置规则讲解
《主播少女的秘密账号迷宫》首支宣传片
汽水音乐在线解析 汽水音乐在线解析入口
AO3最新可访问网址 Archive of Our Own官方在线入口
京东单号查询入口_京东快递订单追踪入口
必由学官网快捷入口 必由学网页版在线学习平台
html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】
不同用户不同价格! 索尼开启账户个性化定价测试
抖音网页版企业服务中心登录入口_抖音网页版企业登录平台
NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略
在哪找SublimeJ远程工具_SFTP插件配置教程
Win11怎么修改默认浏览器_Windows 11设置Chrome为默认
地铁跑酷免费秒玩入口链接 地铁跑酷小游戏免费秒玩网站
PDF文件体积过大处理_PDF压缩技巧详解
印象笔记怎样用批量导出备知识库_印象笔记用批量导出备知识库【备份方法】
必由学官方登录入口 必由学教师学生账号快速访问
QQ邮箱官方登录入口_QQ邮箱网页版快捷使用平台
微信网页版登录教程_微信网页版登录入口在哪
html5 app怎么运行环境_配html5 app运行环境【教程】
解决macOS Tkinter应用双击启动崩溃:PyInstaller打包指南
解决Flask中Quill编辑器内容提交失败及TypeError的指南
在J*a中如何开发简易电子商务商品管理系统_商品管理系统项目实战解析
c++ dfs和bfs代码 c++深度广度优先搜索算法
微博网页版直接访问 微博网页版账号管理快速入口
如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流
台积电1.4nm工艺A14瞄准2028:10年来性能提升80%
《北京人工智能产业白皮书(2025)》发布:全年核心产值预计突破 4500 亿元
Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理
马斯克:Optimus 人形机器人复数形式为 Optimi
MongoDB Aggregation:在嵌套对象数组中精确匹配ObjectId
网站内容防复制粘贴的实现策略与局限性
微信聊天记录怎么加密_微信聊天记录加密方法
Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】


2025-10-26
浏览次数:次
返回列表
ent.getElementById('hamburger');
var menu = document.getElementById('n*bar--middle');
menu.style.display = "none";
hamburger.addEventListener('click', function() {
this.classList.toggle("change");
if (menu.style.display === "none") {
menu.style.display = "block";
} else {
menu.style.display = "none";
}
});
// 获取所有锚点链接
var anchors = document.querySelectorAll('.n*-contents > a');
// 遍历锚点链接,添加点击事件监听器
anchors.forEach(item => {
item.addEventListener('click', () => {
// 关闭菜单
menu.style.display = "none";
// 切换 Hamburger 图标状态
hamburger.classList.toggle("change");
});
});