html 结构排版:

// 定位到页面左侧或者右侧

<div class="nav"> 

       <ul id="menu-list">

            <li><a href="#one" class="links one">Menu 1</a></li>

            <li><a href="#two" class="links two">Menu 2</a></li>
            <li><a href="#three" class="links three">Menu 3</a></li>
            <li><a href="#four" class="links four">Menu 4</a></li>
            <li><a href="#five" class="links five">Menu 5</a></li>
            <li><a href="#six" class="links six">Menu 6</a></li>
       </ul>
</div>

// 页面顶部的其它内容块

<div class="other-content"> 这里是其它的内容,假设内容高度为300px</div>

//  页面与导航对应的内容块
<div id="wrapper">
       <div id="one" class="container">one</div>
       <div id="two" class="container">two</div>
       <div id="three" class="container">three</div>
       <div id="four" class="container">four</div>
       <div id="five" class="container">five</div>
       <div id="six" class="container">six</div>
</div>

js效果实现:

<script>

/*
         菜单-内容块 对应

利用锚点链接的原理,所以导航的a标签的href= # + 对应内容块的ID
        为了设置对应导航高亮,为了方便起见,导航的class需要与对应内容块的ID保持一致
        如果楼层上面有头部等其他内容需要判断currentScroll 的值是否大于上面其它内容块的高度,否则执行这一步(var id = $currentSection.attr('id'))的时候 会报错
     */

      $(window).scroll(function(){

           var $sections = $('.container'); // 获取所有的内容块
           var currentScroll = $(this).scrollTop();  // winodw滚动的高度
           var $currentSection ;   //   当前内容块
         $sections.each(function(){
            var divPosition = $(this).offset().top;  // 获取到当前内容块具体页面顶部的距离
            if( divPosition - 1 < currentScroll){  //  通过条件判断匹配到当前滚动内容块
               $currentSection = $(this);
            }

    // 如果楼层最上端有其它的内容快需要加一个判断

    if(currentScroll > 300){

       var id = $currentSection.attr('id');
                 $('.links').removeClass('menu-active');
                 $("."+id).addClass('menu-active');

    }
            

         })

});

</script>

文章来源:http://caibaojian.com/higlight-nav-link.html

最新文章

  1. 关于swap函数传值的问题
  2. 关于IE8
  3. jquery 给input赋值错误写法
  4. html中表table行循环滚动例子
  5. Winform 菜单和工具栏控件
  6. unix文件操作函数
  7. [转] - QBuffer类参考
  8. Task+http请求
  9. maven入门教程
  10. 深入了解Json转变为map的思想,附源代码2
  11. js_设置光标到文本的最后位置
  12. CTSC2017总结
  13. ssh反向代理
  14. java遍历List中的map的几种方法
  15. 709. To Lower Case
  16. LeetCode 键盘行-Python3.7&lt;四&gt;
  17. Java开发中常用的设计模式(二)---单例模式
  18. Java编程的逻辑 (52) - 抽象容器类
  19. linux中DHCP服务配置文件/etc/dhcpd.conf详细说明
  20. unity-------------------打包BuildAssetBundles的使用

热门文章

  1. 详解Spring Security的formLogin登录认证模式
  2. 010.Kubernetes二进制部署kube-controller-manager
  3. 服务器spring boot版本,平滑升级
  4. jvm与程序的生命周期
  5. 本地yum配置
  6. nyoj 4 ASCII码排序
  7. nyoj 50-爱摘苹果的小明 (比较)
  8. C. Present(二分 + 扫描线)
  9. 视频抓取利器you-get
  10. Centos7編譯安裝LAMP平臺