我正在尝试在导航菜单(带有下拉菜单)中突出显示“当前页面”。
当我具有简单的导航链接(使用“ <a>” HTML标记构建)时,下面的代码完成了工作。我现在正在升级导航栏以容纳下拉菜单(使用“ <按钮>” HTML标记)。
我相信我需要采取类似的方法,并为“当前”页面分配一个活动类,但是我无法像我对“ <a>”对象那样,想出如何遍历“ <button>”对象的方法
使用导航栏中的按钮(“ <button>”)时,如何动态突出显示导航栏中的当前页面?
我在W3上找到了一篇相关文章:https : //www.w3schools.com/howto/tryit.asp? filename =tryhow_js_active_element2,但由于我在不同的URL之间导航,因此不适用于我的用例。
我的代码的简化版本如下所示:
<div class="navigation">
<a href="index.html">Home</a>
<a href="page_a.html">Page A</a>
<div class="dropdown">
<button class="dropbtn" onclick="location.href='page_b.html'" type="button"> Page B</button>
<div class="dropdown-content">
<a href="page_b.html#food">Food</a>
<a href="page_b.html#exercise">Exercise</a>
<a href="page_b.html#drinks">Drinks</a>
</div>
</div>
<a href="page_c.html">Page C</a>
<a href="page_d.html">Page D</a>
</div>
<!-- Highlight current page (works for <a> but not <button>)-->
<script>
$(function(){
$('a').each(function(){
if ($(this).prop('href') == window.location.href) {
$(this).addClass('active');
$(this).parents('li').addClass('active');
}
});
});
</script>
关联的CSS:
...
.active {
background-color: blue;
}
...
.dropdown:not(.dropdown-content) {
float: left;
overflow: hidden;
}
.dropdown .dropbtn {
font-size: 17px;
border: none;
outline: none;
padding: 14px 16px;
margin: 0;
}
...
.dropdown-content {
display: none;
position: absolute;
z-index: 1;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
}
.dropdown-content a {
color: #ffffff;
background-color: #000000;
padding: 14px 16px;
text-decoration: none;
display: block;
text-align: left;
}
.dropdown:hover .dropdown-content{
display: block;
z-index: 1;
}
您需要将活动类添加到每个页面上,以便用户在主页上时。您的代码将是这样。
<a class='active' href="index.html">Home</a>
对于A页
<a class='active' href="page_a.html">Page A</a>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句