汉堡菜单点击仅切换图标不展开,求助实现滑出式导航菜单
汉堡菜单展开问题修复
你的代码中,点击图标能切换样式但菜单不展开,核心问题是移动端样式里,.navmenu.open 只修改了 right 属性,没修正初始的 top: -100%,导致菜单始终处于屏幕上方不可见区域。另外,要确保导航栏父容器设置 position: relative,避免绝对定位的菜单脱离预期布局。
修复步骤:
修正CSS中的
.navmenu.open样式
在@media(max-width: 750px)规则内,修改.navmenu.open的属性,将top值改为0,让菜单从顶部滑入:.navmenu.open { top: 0; right: 0%; }为导航栏父容器添加相对定位
给包裹logo、navmenu、nav-icon的父容器添加相对定位,确保.navmenu的绝对定位基于导航栏容器:.navbar-wrap { /* 替换成你实际的父容器类名 */ position: relative; width: 100%; z-index: 1000; }可选:确保JS代码在DOM加载完成后执行
把JS代码放在DOMContentLoaded事件中,避免DOM未加载完成导致元素获取失败:document.addEventListener('DOMContentLoaded', function() { let menu = document.querySelector('#menu-icon'); let navmenu = document.querySelector('.navmenu'); menu.onclick = () => { menu.classList.toggle('bx-x'); navmenu.classList.toggle('open'); } });
修改后的完整移动端CSS:
@media(max-width: 750px) { #menu-icon { display: block; } .navmenu { position: absolute; top: -100%; right: 0%; width: 300px; height: 130vh; background: #000; display: flex; flex-direction: column; align-items: center; padding: 120px 30px; transition: all .42s; z-index: 10000; } .navmenu a { display: block; margin: 10px 0; color: #fff; /* 黑色背景下改为白色文字,提升可读性 */ } .navmenu.open { top: 0; right: 0%; } }
内容的提问来源于stack exchange,提问作者Johnsmith22021
相关产品推荐
相关产品推荐

