菜单
×
   ❮     
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">Section 1</a></li>
    ...
</nav>

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

</body>
自己动手试一试 »


通过 JavaScript

使用以下命令手动启用:

示例

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

Scrollspy 选项

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

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

Scrollspy 方法

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

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

Scrollspy 事件

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

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

更多示例

带动画滚动的 Scrollspy

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

平滑滚动

// 将 scrollspy 添加到 <body>
$('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

});
自己动手试一试 »

滚动监听和固钉

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>
自己动手试一试 »


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持