## 滚动监听 scrollspy.js
滚动监听插件是用来根据滚动条所处的位置来自动更新导航项的。如下所示,滚动导航条下面的区域并关注导航项的变化。下拉菜单中的条目也会自动高亮显示。
**用法**
注意:
* 依赖 Bootstrap 的导航组件
滚动监听插件依赖 Bootstrap 的导航组件 用于高亮显示当前激活的链接。
* 导航栏链接必须有可解析的id目标。例如,\<a href=“#home”\>home\</a\>必须对应于DOM中的某些内容,如\<div id=“home”\>\</div\>。
**1.** 需要相对定位(relative positioning)
滚动监听都需要被监听的组件是`position: relative;`即相对定位方式。一般我们监听的都是`body`,所以直接给body一个`相对定位`。
**2.** 通过 data 属性调用
将data-spy=“scroll”添加到要监视的元素(最典型的是<body>)。然后使用任何Bootstrap.nav组件的父元素的ID或类添加datatarget属性。如下:
~~~css
body {
position: relative;
}
~~~
~~~html
<body data-spy="scroll" data-target="#navbar-example">
...
<div id="navbar-example">
<ul class="nav nav-tabs" role="tablist">
...
</ul>
</div>
...
</body>
~~~
**3.** 通过 JavaScript 调用
在 CSS 中添加`position: relative;`之后,通过 JavaScript 代码启动滚动监听插件
~~~js
$('body').scrollspy({ target: '#navbar-example' })
~~~
*****
**方法**
当使用滚动监听插件的同时在 DOM 中添加或删除元素后,需要像下面这样调用刷新( refresh) 方法:
~~~js
$('[data-spy="scroll"]').each(function () {
var $spy = $(this).scrollspy('refresh')
})
~~~
*****
**参数**
可以通过 data 属性或 JavaScript 传递参数。对于 data 属性,其名称是将参数名附着到`data-`后面组成,例如`data-offset=""`。
| 名称 | 类型 | 默认值 | 描述 |
| --- | --- | --- | --- |
| offset | number | 10 | 计算滚动位置时相对于顶部的偏移量(像素数)。 |
*****
**事件**
| 事件类型 | 描述 |
| --- | --- |
| activate.bs.scrollspy | 每当一个新条目被激活后都将由滚动监听插件触发此事件。 |
~~~js
$('#myScrollspy').on('activate.bs.scrollspy', function () {
// do something…
})
~~~
- 第一章 . bootstrap介绍
- 第二章 . 全局CSS样式
- 1、总体注意事项
- 2、栅格系统
- 3、排版
- 4、代码
- 5、表格
- 6、表单
- 7、 按钮
- 8、 图片
- 9、辅助类
- 10、响应式工具
- 第三章 . bootstrap相关CSS应用
- 1、CSS媒体查询 @media
- 2、px,em,rem之间的关系和换算方式
- 第四章 . 组件
- 1、Glyphicons 字体图标
- 2、下拉菜单
- 3、按钮组
- 4、按钮式下拉菜单
- 5、输入框组
- 6、导航
- 7、导航条
- 8、路径导航
- 9、分页
- 10、标签
- 11、徽章
- 12、巨幕
- 13、页头
- 14、缩略图
- 15、警告框
- 16、进度条
- 17、媒体对象
- 18、列表组
- 19、面版
- 20、Well
- 第五章 . JavaScript 插件
- 1、JavaScript 插件引入前提
- 2、过渡效果 (transition.js)
- 3、模态框 (modal.js)
- 4、下拉菜单 (dropdown.js)
- 5、滚动监听 (scrollspy.js)
- 6、可切换标签 (tab.js)
- 7、工具提示 (tooltip.js)
- 8、弹出框 (popover.js)
- 9、警告信息 (alert.js)
- 10、按钮 (button.js)
- 11、折叠插件(collapse.js)
- 12、轮播插件(carousel.js)
- 13、Affix插件(affix.js)