二级导航栏通常指的是在主导航栏下方展开的子菜单,用于提供更详细的导航选项。纯JavaScript实现二级导航栏意味着不依赖任何前端框架,仅使用原生JavaScript、HTML和CSS来完成。
以下是一个简单的纯JavaScript实现二级导航栏的示例:
<nav class="navbar">
<ul>
<li><a href="#">首页</a></li>
<li class="dropdown">
<a href="#" class="dropbtn">产品</a>
<div class="dropdown-content">
<a href="#">产品1</a>
<a href="#">产品2</a>
<a href="#">产品3</a>
</div>
</li>
<li><a href="#">关于我们</a></li>
</ul>
</nav>
.navbar ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
background-color: #333;
}
.navbar li {
float: left;
}
.navbar li a {
display: block;
color: white;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
}
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.dropdown-content a:hover {
background-color: #f1f1f1;
}
document.addEventListener('DOMContentLoaded', function() {
var dropdowns = document.querySelectorAll('.dropdown');
dropdowns.forEach(function(dropdown) {
dropdown.addEventListener('mouseover', function() {
this.querySelector('.dropdown-content').style.display = 'block';
});
dropdown.addEventListener('mouseout', function() {
this.querySelector('.dropdown-content').style.display = 'none';
});
});
});
问题:子菜单在鼠标移出时立即消失。
原因:mouseout
事件在鼠标移出子菜单区域时也会触发,导致子菜单立即隐藏。
解决方法:使用mouseleave
事件代替mouseout
,因为mouseleave
只在鼠标完全离开元素时触发。
dropdown.addEventListener('mouseleave', function() {
this.querySelector('.dropdown-content').style.display = 'none';
});
通过这种方式,可以实现一个简单且功能齐全的二级导航栏,适用于多种网页设计需求。
领取专属 10元无门槛券
手把手带您无忧上云