繁体   English   中英

我尝试创建导航栏,但我的 javascript 代码不起作用

[英]i try to create a navbar but my javascript code doesn't work

所以你好,我正在尝试创建一个导航栏,事情进展顺利,但是当我在导航栏的响应性工作时,我的 addeventlistener function 不起作用:这是我的 html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="style.css">
    <script src="app.js"></script>
    <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@600&display=swap" rel="stylesheet">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Test Nav</title>
</head>
<body>
    <nav class="navbar">
        <h4 class="logo">Nav</h4>
        <ul class="navlinks">
            <li>
                <a href="#" >Home</a>
            </li>
            <li>
                <a href="#" >Work</a>
            </li>
            <li>
                <a href="#" >About us</a>
            </li>
            <li>
                <a href="#" >Projects</a>
            </li>
        </ul>
        <div class="burger">
            <div class="bar1"></div>
            <div class="bar2"></div>
            <div class="bar3"></div>
        </div>
    </nav>
</body>
</html>

我的 css:

*{
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}
.navbar{
    display: flex;
    justify-content: space-around;
    align-items: center;
    min-height: 8vh;
    background-color: black;
    font-family:  'Poppins', sans-serif;
}
.logo{
    color: white;
    font-size: 20px;
    text-transform: uppercase;
    letter-spacing: 5px;
}
.navlinks{
    display: flex;
    justify-content: space-around;
    width: 30%;
}
.navlinks a:hover{
    background-color: rgb(37, 156, 196);
}
.navlinks li{
    list-style: none;
}
.navlinks a{
    color: white;
    text-decoration: none;
    letter-spacing: 3px;
    font-weight: bold;
    font-size: 14px;
}
.burger{
    cursor: pointer;
    display: none;
}
.burger div{
    width: 25px;
    height: 2px;
    background-color: white;
    margin: 5px;

}
@media screen and (max-width:1024px){
    .navlinks{
        width: 60%;
    }
}
@media screen and (max-width:768px){
    body{
        overflow-x: hidden;
    }
    .navlinks{
        position: fixed;
        right: 0px;
        height: 92vh;
        top: 8vh;
        background-color: black;
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 50%;
        transform: translateX(100%);
        transition: transform 0.5s ease-in;
    }
    .navlinks li{
        opacity: 0;
    }
    .burger{
        display: block;
    }
}
.nav-active{
    transform: translateX(0%);
}
@keyframes navLinkFade{
    from{
        opacity: 0;
        transform: translateX(50px);
    }
    to{
        opacity: 1;
        transform: translateX(0px);
    }
}

这是我的 javascript 代码:

const navSlide = () => {
    const burger = document.querySelector('.burger')
    const nav = document.querySelector('.navlinks')

    burger . addEventListener('click',()=>{
        nav.classList.toggle('nav-active')
    })
}

navSlide();

我在这个论坛上很新,但我听说它是最受欢迎的,我的代码行让我很生气所以是的,再次感谢你回答我的帖子

很高兴看到你是新来的,并决定加入!

不使用 jQuery,你可以使用这个:

const navSlide = () => {
    const burger = document.querySelector('.burger')
    const nav = document.querySelector('.navlinks')

    burger . addEventListener('click',()=>{
        nav.classList.toggle('nav-active')
    })
}

document.addEventListener("DOMContentLoaded", function(event) { 
  navSlide();
});

基本上,这段代码将等到页面加载(因此所有元素都存在于 DOM 中,这意味着document.querySelector将起作用),然后它附加事件侦听器。 这是避免慢速渲染浏览器等问题的最佳实践,而不依赖于浏览器最后渲染脚本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM