Bootstrap3 滚动监听的使用方法

滚动监听

Bootstrap的滚动监听插件(scrollspy.js)能够根据滚动的位置,自动更新导航条中相应的导航项。

什么是滚动监听?先看一个简单的例子:假设页面上有两个区域,一个是导航区域,一个是内容区域。导航区域的每个链接,都指向内容区域的一个锚点。这样的话,点击导航上的某个链接,就可以跳转到内容区域的相应锚点。

滚动监听,就是实现内容区域和导航链接的反向关联。简单地讲,就是在滚动内容区域时,能够自动更新导航中的导航项。例如,当滚动到内容区域的某个锚点时,导航中对应的链接自动高亮显示。

使用方法

滚动监听插件的使用方法非常简单,因为它背后的所有工作,Bootstrap已经替我们做好了。我们只需定义相应的结构,并设置几个属性就可以了。

首先,定义导航条,并让导航链接指定相应的目标锚点,如 href="#fat" 等。同时,还要为导航条定义一个 id 值,如 id="navbar",以方便滚动监听。

 
  1. <nav id="navbar" class="navbar navbar-default navbar-static">
  2.   <ul class="nav navbar-nav">
  3.     <li class="active"><a href="#fat">@fat</a></li>
  4.     <li class=""><a href="#mdo">@mdo</a></li>
  5.     ...
  6.   </ul>
  7. </nav>

然后,定义内容区域,其中包含多个锚点,它们分别与导航链接中的目标锚点相呼应。锚点可以通过元素的 id 指定,这里在每个标题定义锚点,如 id="fat" 等。如:

 
  1. <div>
  2.   <h4 id="fat">@fat</h4>
  3.   <p>Ad leggings keytar, brunch id art ...</p>
  4.   <h4 id="mdo">@mdo</h4>
  5.   <p>Veniam marfa mustache ...</p>
  6.   ...
  7. </div>

如果希望滚动内容区域时,能够自动更新导航中的链接,还需要为内容区域的元素定义 data-spy="scroll" 属性和 data-target 属性。data-target 属性的值是一个选择器,让它指向监听对象。这里的监听对象就是导航条,就可以把data-target 属性的值设置为导航条的 id:

 
  1. <div data-spy="scroll" data-target="#navbar">
  2.   <h4 id="fat">@fat</h4>
  3.   ...
  4. </div>

现在,拖动内容区域右侧的滚动条,当滚动区域到达锚点 @mdo 时,导航条中的菜单项 @mdo 就会自动高亮显示。这是因为滚动监听插件能够监听滚动达到的位置,并自动为导航条的相应导航项添加了.active 类让它高亮显示。效果如图 4‑3所示:

Bootstrap3 滚动监听的使用方法

图4-3 滚动监听

如果导航中包含下拉菜单,并且滚动区域内容到达下拉菜单所对应的区域,除了子菜单高亮以外,子菜单的父元素也会高亮。子菜单会虽然高亮,但不会自动展开,如果手动点击下拉菜单,就能看到效果。效果如图 4‑4所示:

Bootstrap3 滚动监听的使用方法

图4-4 滚动监听子菜单

关于作者

歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。