【发布时间】:2021-04-29 15:06:59
【问题描述】:
我正在尝试用 CSS/JS 制作一个 汉堡菜单。
我有一个 navbar (nav) 菜单,在计算机中显示如下:
在汉堡菜单中,当分辨率小于 768 像素(平板电脑和低于此分辨率的设备的分辨率)时,如下所示:
当我们在计算机中时,汉堡菜单按钮是隐藏的(显示:无),但我让它在分辨率为 (>768px) 时出现,并显示出来,并且使用 Javascript 我抓住这个按钮并向它添加事件监听器。
当我们点击汉堡按钮时,列表菜单(元素)必须使用 translateX(0%) 从右到左出现,因为我使列表最初进行了转换: translateX(-100%) 走出屏幕(我在正文中添加一个overflow-x:hidden来隐藏多余的并提供一个水平滚动条,无论如何)..
ul.nav_links 最初的样式:
position: absolute;
right: 0;
top: 8vh;
height: 92vh;
background-color: rgb(68, 122, 122);
display: flex;
flex-direction: column;
width: 50%;
transition: transform 2s;
transform: translateX(100%);
我要添加的类(只是回到0%):
// Class to add in JavaScript
.nav_active {
transform: translateX(0%);
}
Js 代码:
//grabbing the burger button
let burger=document.querySelector(".burger");
//grabbing the ul element with class (nav_links)
let nav=document.querySelector(".nav_links");
//Add the listener to burger button, that have to toggle the class "nav_active"
burger.addEventListener("click",()=>{
nav.classList.toggle("nav_active");
})
但由于某种原因,类(名为:nav_active)正在正确添加到(我使用 Chrome 的 devtools,并且每次单击它时都会切换类,我可以看到类添加和删除到),但是transform:translateX(0%),它不起作用。
不知道为什么?
【问题讨论】:
-
你能创建一个 jsfiddle 以便我解决它,因为我需要查看更多代码
标签: javascript css dom-events css-transforms hamburger-menu