模仿百度百科的滚轮事件

我们在查看百度百科时,经常能发现右边有一个导航跟着滚动,这是一个非常不错的创意,方便用户查看浏览。

在网上找到了一个用JavaScript写的代码,不过鄙人觉得不是很好,就用jQuery写了一个。毕竟jQuery写的代码比较少,也比较容易理解。

html的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jquery 菜单</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script type="text/javascript" src="jquery-2.1.4.min.js"></script>
    <script type="text/javascript" src="kuozhan.js"></script>
    
    <style type="text/css">
a{
    text-decoration: none;
    color: gray;
}

#gailan{
    width: 40%;
    height:auto;
    float: left;
    position: fixed;
    top: 100px;
    left:10px;
}
#xiangxi{
    width: 60%;
    height: auto;
    float: right;
    margin-top: 80px;

}

    </style>

</head>



<body>



<div id="gailan">
    <ul>
        <li><a href="#1">1、第一</a></li>
        <li><a href="#2">2、第二</a></li>
        <li><a href="#3">3、第三</a></li>
        <li><a href="#4">4、第四</a></li>
        <li><a href="#5">5、第五</a></li>
        <li><a href="#6">6、第六</a></li>
        <li><a href="#7">7、第七</a></li>
        <li><a href="#8">8、第八</a></li>
        <li><a href="#9">9、第九</a></li>
        <li><a href="#10">10、第十</a></li>
        <li><a href="#11">11、第十一</a></li>

    </ul>
    
</div>


<div id="xiangxi">
    
    <ul>
        <li id="1">1、第一<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>

        <li id="2">2、第二<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        <li id="3">3、第三<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        <li id="4">4、第四<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        <li id="5">5、第五<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        <li id="6">6、第六<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        <li id="7">7、第七<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        <li id="8">8、第八<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        <li id="9">9、第九<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        <li id="10">10、第十<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        <li id="11">11、第十一<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></li>
        

    </ul>
</div>
</body>
</html>

js的代码

$(document).ready(function(){

var xio = $("#xiangxi ul li");//ID xiangxi 的li标签
var glo = $("#gailan ul li a");//ID gailan 的a标签
var yiheight = xio.eq(0).offset().top;//第一个详细的高度
var lastheight = xio.eq(-1).offset().top;//返回最后一个li的高度
var lasttwoheight = xio.eq(-2).offset().top;//返回倒数第二个li的高度
var lzheight = (lastheight - lasttwoheight)*2/3;//两者之间高度的2/3


window.onscroll=function(){ //滚轮滚动事件,JavaScript的写法

xio.each(function(i,n){    //each函数的遍历,jquery的用法

var scrollheight = $(window).scrollTop();//滚动条滚动的高度,这个必须放在滚动函数里

     if( xio.eq(i).offset().top < scrollheight+yiheight && xio.eq(i+1).offset().top > scrollheight+yiheight /*与的比较,符合两个情况才为真*/  ){

    glo.eq(i).css({"color":"#f00","font-size":"18px"});//突出的css
    
  }else{
       glo.eq(i).css({"color":"#00AA00","font-size":"16px"});//原来的css
  }
      if (scrollheight > lasttwoheight+lzheight){   //为最后一个,做的判断补偿
          glo.eq(-1).css({"color":"#f00","font-size":"18px"});
      }


 });
}


});

建议将这两段代码复制到自己文件上查看,才比较容易看出所以然来,里面的注释已经写的很清楚了。相信很容易就能看明白了。

原文地址:https://www.cnblogs.com/hxqseo/p/4598778.html