导航栏保持高亮状态(适合共用导航)

本文介绍如何利用JavaScript根据当前页面路由动态设置导航栏中相应选项的高亮效果。通过遍历导航栏中的链接,比较其href属性与当前页面URL,匹配到则添加active类实现高亮,未匹配则移除。此方法适用于多页面应用,确保用户始终能清晰看到所在页面的导航项。

导航栏是所有页面共用的组件,导航栏会单独分离出来作为各个页面的引用,很多时候需要高亮当前页面的选项。这里用js来控制高亮情况。

(根据自己的业务需求修改样式)

思路:寻找与当前页面路由匹配的href

css :

.active{
    color: #fff;
    background-color: #c92b30;
}

当前页面高亮的css类为active 

html:

<div id="navbars">
    <ul>
       <li class="nav-item atiive">
          <a href="index">首页</a>
       </li>
       <li class="nav-item">
          <a href="page1.html">页面1</a>
       </li>
       <li class="nav-item">
           <a href="page2.html">页面2</a>
       </li>
       <li class="nav-item">
          <a href="page3.html">页面3</a>
       </li>
       <li class="nav-item">
           <a href="page4.html">页面4</a>
       </li>
   </ul>
</div>

js:

$(function () {
    // 获取当前页面的网址
    let url = location.href;
    // 当前页面的高亮状态
    let status = false;
    // 检索每个id为navbars中的a标签,为页面添加高亮状态
    $('#navbars a').each(function () {
        // 找到跟当前网址与url匹配,并且不为空。找到就在相应位置添加高亮class
        if((url + '/').indexOf($(this).attr('href')) > -1 && $(this).attr('href') != '')  {
            $(this).parent('li').addClass('active');
            status = true;
        }else {
            $(this).parent('li').removeClass('active')
        }
    });
    //初始状态为false,默认第首页(第一个)高亮
    if(!status){
        $('#navbars ul li').eq(0).addClass('active');
    }
})

 这里,$(this)为当前的a标签,所以要给a的父标签添加active。(所以根据自己的html布局来对应添加

str.indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

如果没有找到匹配的字符串则返回 -1。

注意: indexOf() 方法区分大小写。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值