Bootstrap JS Affix

JS Affix (affix.js)

Affix 插件可用将元素粘贴(锁定)到页面上的某个区域。它通常与导航菜单或社交图标按钮一起使用,使它们在页面上下滚动时 "粘" 在特定区域。该插件会根据滚动位置来打开和关闭该行为(将CSS position的值从 static 更改为 fixed)。

Affix 插件在 3 个样式类之间切换: .affix, .affix-top, 和 .affix-bottom。每个样式类代表一个特定的状态。你必须添加 CSS 属性来处理实际的位置,除了 在 affix 类上的 position:fixed

学习更多有关知识,请访问本站的 Bootstrap Affix 教程.

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


通过 data-* 属性

向要监视的元素添加 data-spy="affix",并添加 data-offset-top|bottom="number" 属性以计算滚动条的位置。

实例
  1. <ul class="nav nav-pills nav-stacked" data-spy="affix" data-offset-top="205">

通过 JavaScript

使用手动启用:

实例
  1. $('.nav').affix({offset: {top: 150} });

Affix 选项参数 Options

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

名称类型默认描述
offsetnumber | object | function10 指定计算滚动位置时要从屏幕偏移的像素数。使用单个数字时,偏移量将同时添加到顶部和底部方向。如果只想控制顶部或底部,请使用对象,如 offset: {top:25}

对于多个 offsets, 使用 offset: {top:25, bottom:50}

提示: 使用函数来动态提供偏移(可用于响应式设计)
targetselector | node | elementthe window object指定 affix 的目标元素

Affix 事件

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

事件描述试一试
affix.bs.affix在将 fixed 定位添加到元素之前发生(例如,当 .affix-top 类即将替换为 .affix 类时)试一试
affixed.bs.affix将 fixed 定位添加到元素后发生(例如,将 .affix-top 类替换为 .affix 类后))试一试
affix-top.bs.affix在顶部元素返回其原始(非 fixed)位置之前发生(例如,.affix 类将被 .affix-top 替换)试一试
affixed-top.bs.affix在顶部元素返回其原始(非 fixed)位置后发生(例如,.affix 类已替换为 .affix-top试一试
affix-bottom.bs.affix在底部元素返回其原始(非 fixed)位置之前发生(例如,.affix 类将被 .affix-bottom 替换)试一试
affixed-bottom.bs.affix在底部元素返回其原始(非 fixed)位置后发生(例如,.affix 类已替换为 .affix-bottom试一试

更多实例

附加导航条

创建水平附加导航菜单:

实例
  1. <nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197">
使用 jQuery 自动附加导航栏

使用 jQuery 的 outerHeight() 方法在用户滚动通过指定元素(<header>)后附加导航栏:

实例
  1. $(".navbar").affix({offset: {top: $("header").outerHeight(true)}
  2. });
滚动监听 & 附加导航

使用 Affix 与 Scrollspy 滚动监听插件一起使用:

水平菜单 (导航条)
  1. <body data-spy="scroll" data-target=".navbar" data-offset="50">
  2. <nav class="navbar navbar-inverse" data-spy="affix" data-offset-top="197">
  3. ...
  4. </nav>
  5. </body>
垂直菜单 (滑动条)
  1. <body data-spy="scroll" data-target="#myScrollspy" data-offset="15">
  2. <nav class="col-sm-3" id="myScrollspy">
  3. <ul class="nav nav-pills nav-stacked" data-spy="affix" data-offset-top="205">
  4. ...
  5. </nav>
  6. </body>
在 affix 上的导航条动画

使用 CSS 来处理不同的 .affix 类:

实例 - 更改滚动条上导航栏的背景色和填充
  1. .affix {
  2. top: 0;
  3. width: 100%;
  4. -webkit-transition: all .5s ease-in-out;
  5. transition: all .5s ease-in-out;
  6. background-color: #F44336;
  7. border-color: #F44336;
  8. }
  9. .affix a {
  10. color: #fff !important;
  11. padding: 15px !important;
  12. -webkit-transition: all .5s ease-in-out;
  13. transition: all .5s ease-in-out;
  14. }
  15. .affix-top a {
  16. padding: 25px !important;
  17. }
实例 - 滑动导航条
  1. .affix {
  2. top: 0;
  3. width: 100%;
  4. -webkit-transition: all .5s ease-in-out;
  5. transition: all .5s ease-in-out;
  6. }
  7. .affix-top {
  8. position: static;
  9. top: -35px;
  10. }