W3C中文教程
全球最大最新的中文 Web 技术教程
HTML CSS SQL PHP COLORS MYSQL BOOTSTRAP
 

Bootstrap JS 滚动监听



JS 滚动监听 (scrollspy.js)

滚动监听插件用于根据滚动位置自动更新导航列表中的链接。

有关Scrollspy的教程,请阅读我们的 Bootstrap Scrollspy教程

提示: Scrollspy插件通常与Affix插件一起使用。


通过 data-*属性 触发

向您想要监听的元素(通常是 <body>)添加 data-spy="scroll"。然后添加带有 Bootstrap .navbar 组件的父元素的 ID 或 class 的属性 data-target。为了它能正常工作,您必须确保页面主体中有匹配您所要监听链接的 ID 的元素存在。

Note 需要相对定位: 具有 data-spy="scroll" 的元素需要CSS position属性,值为 "relative" 才能正常工作。
<!-- The scrollable area -->
<body data-spy="scroll" data-target=".navbar" data-offset="50">

<!-- The navbar - The <a> elements are used to jump to a section in the scrollable area -->
<nav class="navbar navbar-inverse navbar-fixed-top">
...
  <ul class="nav navbar-nav">
    <li><a href="#section1">Section 1</a></li>
    ...
</nav>

<!-- Section 1 -->
<div id="section1">
  <h1>Section 1</h1>
  <p>Try to scroll this page and look at the navigation bar while scrolling!</p>
</div>
...

</body>
测 试

通过 JavaScript 触发

手动启动:

$('body').scrollspy({target: ".navbar"}) 测 试

选项

下表列出了所有可用的scrollspy选项。

名称 类型 默认值 描述 实例
offset number 10 计算滚动位置时相对于顶部的偏移量(像素数) 测 试

方法

下表列出了所有可用的scrollspy方法。

方法 描述 实例
.scrollspy("refresh") 当使用滚动监听插件的同时在 DOM 中添加或删除元素后,调用此刷新( refresh) 方法刷新文档 测 试

事件

下表列出了所有可用的scrollspy事件。

事件 描述 实例
activate.bs.scrollspy 每当一个新条目被激活后都将由滚动监听插件触发此事件 测 试

Examples

更多实例

带有动画效果的滚动监听

如何在同一页上添加平滑页滚动到锚点:

Smooth scrolling

// Add scrollspy to <body>
$('body').scrollspy({target: ".navbar", offset: 50});

// Add smooth scrolling to all links inside a navbar
$("#myNavbar a").on('click', function(event){

  // Prevent default anchor click behavior
  event.preventDefault();

  // Store hash (#)
  var hash = this.hash;

  // Using jQuery's animate() method to add smooth page scroll
  // The optional number (800) specifies the number of milliseconds it takes to scroll to the specified area (the speed of the animation)
  $('html, body').animate({
    scrollTop: $(hash).offset().top
  }, 800, function(){

    // Add hash (#) to URL when done scrolling (default click behavior)
    window.location.hash = hash;
  });
});
尝试一下 »

滚动监听 & 附加导航

使用 附加导航 插件和滚动监听插件:

Horizontal Menu (Navbar)

<body data-spy="scroll" data-target=".navbar" data-offset="50">

<nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197">
...
</nav>

</body>
尝试一下 »

Vertical Menu (Sidenav)

<body data-spy="scroll" data-target="#myScrollspy" data-offset="15">

<nav class="col-sm-3" id="myScrollspy">
  <ul class="nav nav-pills nav-stacked" data-spy="affix" data-offset-top="205">
  ...
</nav>

</body>
尝试一下 »