我已經完成了我的第一個投資組合,我的導航欄代碼與 JS、css、HTML 都不起作用,即使我嘗試了很多次。
導航欄出現,但事件沒有發生。(每次我加載頁面時都會顯示選單。)可能是因為 JavaScript 的代碼錯誤?有人可以幫我嗎?
// JavaScript //
document
.querySelector('.btn-mobile-nav')
.addEventListener('click', function () {
console.log('.btn-mobile-nav');
document.querySelector('.mobile-menu').classList.toggle('.is-active');
});
// HTML //
<nav class="nav">
<div class="main-nav">
<ul class="main-nav-list mobile-menu">
<li>
<a class="main-nav-link mobile-menu-item" href="#intro"
>introduce</a
>
</li>
<li>
<a class="main-nav-link mobile-menu-item" href="#aboutme"
>about me</a
>
</li>
<li>
<a class="main-nav-link mobile-menu-item" href="#work">work</a>
</li>
<li>
<a class="main-nav-link mobile-menu-item" href="#skill">skill</a>
</li>
</ul>
</div>
</nav>
<button class="btn-mobile-nav">
<ion-icon class="icon-mobile-open" name="menu-outline"></ion-icon>
</button>
// CSS //
.btn-mobile-nav {
opacity: 1;
position: fixed;
color: #ccc;
background-color: rgba(255, 255, 255, 0.658);
border: none;
height: 3.2rem;
width: 3.2rem;
top: 0.2rem;
right: 0.2rem;
z-index: 2;
}
.icon-mobile-open {
height: 2.5rem;
width: 2.5rem;
}
.mobile-menu {
position: fixed;
top: 0;
right: 0;
z-index: 1;
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: #555;
}
.mobile-menu-item {
width: 100%;
height: auto;
padding: 0.5em 1em;
text-align: center;
color: #fff;
box-sizing: border-box;
}
/* before */
.mobile-menu {
pointer-events: none;
transition: opacity 0.3s linear;
opacity: 0;
}
/* after */
.mobile-menu .is-active {
pointer-events: auto;
opacity: 1;
}
uj5u.com熱心網友回復:
這里有兩個問題:
- 您需要將類名(不是選擇器)傳遞給
.toggle()(從.中洗掉toggle('.is-active')) - 您需要在 CSS中選擇與
mobile-menu和類相同的元素(通過洗掉 之間的空格來完成)is-active.mobile-menu .is-active
document
.querySelector('.btn-mobile-nav')
.addEventListener('click', function() {
console.log('.btn-mobile-nav');
document.querySelector('.mobile-menu').classList.toggle('is-active');
});
.btn-mobile-nav {
opacity: 1;
position: fixed;
color: #ccc;
background-color: rgba(255, 255, 255, 0.658);
border: none;
height: 3.2rem;
width: 3.2rem;
top: 0.2rem;
right: 0.2rem;
z-index: 2;
/*Added to make the example clearer*/
border: 1px solid #000;
}
.icon-mobile-open {
height: 2.5rem;
width: 2.5rem;
}
.mobile-menu {
position: fixed;
top: 0;
right: 0;
z-index: 1;
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: #555;
}
.mobile-menu-item {
width: 100%;
height: auto;
padding: 0.5em 1em;
text-align: center;
color: #fff;
box-sizing: border-box;
}
/* before */
.mobile-menu {
pointer-events: none;
transition: opacity 0.3s linear;
opacity: 0;
}
/* after */
.mobile-menu.is-active {
pointer-events: auto;
opacity: 1;
}
<nav class="nav">
<div class="main-nav">
<ul class="main-nav-list mobile-menu">
<li>
<a class="main-nav-link mobile-menu-item" href="#intro">introduce</a>
</li>
<li>
<a class="main-nav-link mobile-menu-item" href="#aboutme">about me</a>
</li>
<li>
<a class="main-nav-link mobile-menu-item" href="#work">work</a>
</li>
<li>
<a class="main-nav-link mobile-menu-item" href="#skill">skill</a>
</li>
</ul>
</div>
</nav>
<button class="btn-mobile-nav">
<ion-icon class="icon-mobile-open" name="menu-outline"></ion-icon>
</button>
uj5u.com熱心網友回復:
我可以在這里再添加一個問題嗎?我想在單擊串列項時關閉此導航,但只有第一個串列項有效,其他無效...
document.querySelector('a[href^="#"]').addEventListener('click', function () {
document.querySelector('.mobile-menu').classList.remove('is-active');
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/414282.html
標籤:
上一篇:我無法在導航元素中定位串列元素
下一篇:基于3個條件的顏色html表
