Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Bootstrap JS Scrollspy


JS Scrollspy (scrollspy.js)

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

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

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


通过 data-* 属性

向应作为可滚动区域的元素添加 data-spy="scroll"(通常是 <body> 元素)。

然后添加 data-target 属性,其值为导航栏的 id 或类名 (.navbar)。这是为了确保导航栏与可滚动区域相连。

请注意,可滚动元素必须与导航栏列表项中链接的 ID 匹配 (<div id="section1"><a href="#section1"> 匹配)。

可选的 data-offset 属性指定在计算滚动位置时从顶部偏移的像素数。当您觉得导航栏内的链接在跳转到可滚动元素时,过早或过晚地更改活动状态时,此属性非常有用。默认值为 10 像素。

需要相对定位:具有 data-spy="scroll" 的元素需要 CSS position 属性,其值为 "relative" 才能正常工作。

示例

<!-- 可滚动区域 -->
<body data-spy="scroll" data-target=".navbar" data-offset="50">

<!-- 导航栏 - <a> 元素用于跳转到可滚动区域中的某个部分 -->
<nav class="navbar navbar-inverse navbar-fixed-top">
...
  <ul class="nav navbar-nav">
    <li><a href="#section1">部分 1</a></li>
    ...
</nav>

<!-- 部分 1 -->
<div id="section1">
  <h1>部分 1</h1>
  <p>尝试滚动此页面,并在滚动时查看导航栏!</p>
</div>
...

</body>
自己尝试 »


通过 JavaScript

使用以下方法手动启用

示例

$('body').scrollspy({target: ".navbar"})
自己尝试 »

Scrollspy 选项

选项可以通过 data 属性或 JavaScript 传递。对于 data 属性,将选项名称附加到 data-,如 data-offset=""。

名称 类型 默认值 描述 尝试一下
offset 数字 10 指定在计算滚动位置时从顶部偏移的像素数 尝试一下

Scrollspy 方法

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

方法 描述 尝试一下
.scrollspy("refresh") 在向 scrollspy 添加和删除元素时,可以使用此方法刷新文档 尝试一下

Scrollspy 事件

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

事件 描述 尝试一下
activate.bs.scrollspy 当 scrollspy 激活新项目时发生 尝试一下

更多示例

带动画滚动的 Scrollspy

如何为同一页面上的锚点添加平滑页面滚动

平滑滚动

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

// 在导航栏内的所有链接上添加平滑滚动
$("#myNavbar a").on('click', function(event) {

  // 确保 this.hash 具有值,然后再覆盖默认行为
  if (this.hash !== "") {

    // 阻止默认的锚点单击行为
    event.preventDefault();

    // 存储哈希值
    var hash = this.hash;

    // 使用 jQuery 的 animate() 方法添加平滑页面滚动
    // 可选数字 (800) 指定滚动到指定区域所需的时间(以毫秒为单位)
    $('html, body').animate({
      scrollTop: $(hash).offset().top
    }, 800, function(){

    // 完成滚动后向 URL 添加哈希值 (#)(默认单击行为)
      window.location.hash = hash;
    });

  } // 结束 if

});
自己尝试 »

Scrollspy & Affix

Affix 插件与 Scrollspy 插件一起使用

水平菜单(导航栏)

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

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

</body>
自己尝试 »

垂直菜单(侧边栏)

<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>
自己尝试 »


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.