Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2454197
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: JavaScript

2014-02-26 19:52:53

有一个导航栏列表,以及对应的内容部分,想要实现的效果是,除了能够定位到指定的部分,还要加亮点击的导航条目。

一 可切换式标签页 / 可切换式标签列表


这个方式是参考可切换式标签页,无需写任何JavaScript代码,只需简单的为页面元素指定data-toggle="tab" 或 data-toggle="pill"属性即可激活标签页或胶囊式标签页。为ul添加nav 和nav-tabs classe,即可为其添加Bootstrap的标签页样式。
  1. <ul class="nav nav-tabs">
  2.   <li><a href="#home" data-toggle="tab">首页</a></li>
  3.   <li><a href="#profile" data-toggle="tab">Profile</a></li>
  4.   <li><a href="#messages" data-toggle="tab">Messages</a></li>
  5.   <li><a href="#settings" data-toggle="tab">Settings</a></li>
  6. </ul>
也可以用js代码来控制:
  1. <ul class="nav nav-tabs" id="myTab">
  2.   <li class="active"><a href="#home">..</a></li>
  3.   <li><a href="#profile">Profile</a></li>
  4.   <li><a href="#messages">Messages</a></li>
  5.   <li><a href="#settings">Settings</a></li>
  6. </ul>

  7. <div >
  8.   <div id="home">...</div>
  9.   <div id="profile">...</div>
  10.   <div id="messages">...</div>
  11.   <div id="settings">...</div>
  12. </div>

  13. <script>
  14.   $(function () {
  15.     $('#myTab a').click(function (e) {
  16.       e.preventDefault();
  17.       $(this).tab('show');
  18.     })
  19.   })
  20. </script>
但是同样的效果不能作用在标签列表中,因为列表对应的部分是都显示的,只是滚动条位置不同。所以做了一些修改,加入了定位对应section的代码。
  1. $('#navi_tabs a').click(function (e) {
  2.   e.preventDefault();
  3.   $(this).tab('show');
  4.   var id = $(this).attr("href");
  5.   $.scrollTo(id,100,{offset:-50});
  6. })

二 滚动监听


相对于第一种方法的稍许曲折,滚动监听实现起来就简单多了。JS的实现如下:
  1. $('#nav_tabs').scrollspy()
但是实现中,可能是由于内容是在整个页面范围的,上述方法无效,只能通过更改body标签属性的方式:
  1. <body data-spy="scroll" data-target=".navbar">...</body>

  2. 或者

  3. $('body').attr('data-spy','scroll');
  4. $('body').attr('data-target',"#navi_div");

阅读(13374) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~