簡體   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