js控制公共模板中,不同页面中的导航选中效果

18299次浏览

导航页签选中效果

这个效果很常用,做起来方法也很多。我做的时候,通常用的方法是后端判断页面,然后给当前页面一个选中的class。因为后台来做不会有页面加载的延迟,点击之后就有效果,用户体验起来相对较好。今天介绍一下用js做的方法。

js做法

用js的做法也很多。比较推荐的方法是判断当前的url,然后根据url在nav中的位置,来对nav中的某个导航增加选中样式,代码如下:

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>Document</title>
 </head>
 <body>
<style>
.active {
    color: red;
}
</style>
<ul id="tab2">
    <li><a href="index.html">首页</a></li>
    <li><a href="news.html">新闻</a></li>
    <li><a href="about.html">关于</a></li>
    <li><a href="job.html">工作</a></li>
    <li><a href="ad.html">广告</a></li>
    <li><a href="contactus.html">联系我们</a></li>
</ul>
<script>
//这里的js, 可以做为一个外部的JS文件, 然后由上面这些页面统一引入即可.
(function(){
    var tDiv = document.getElementById("tab2"),
        links = tDiv.getElementsByTagName("a"),
        index = 0,//默认第一个菜单项
        url = location.href.split('?')[0].split('/').pop();//取当前URL最后一个 / 后面的文件名,pop方法是删除最后一个元素并返回最后一个元素

    if(url){//如果有取到, 则进行匹配, 否则默认为首页(即index的值所指向的那个)
        for (var i=links.length; i--;) {//遍历 menu 的中连接地址
            if(links[i].href.indexOf(url) !== -1){
                index = i;
                break;
            }
        }
    }

    links[index].className = 'active';
})();
</script>
 </body>
</html>

我在这里只是暂时写这一种,大家可以把上面代码copy到页面中,新建几个html,测试一下!

Tags: js导航

相关文章: