Bootstrap每天必学之附加导航(Affix)插件


Posted in Javascript onApril 25, 2016

附加导航(Affix)插件允许某个 <div> 固定在页面的某个位置。您也可以在打开或关闭使用该插件之间进行切换。一个常见的例子是社交图标。它们将在某个位置开始,但当页面点击某个标记,该 <div> 会锁定在某个位置,不会随着页面其他部分一起滚动。
如果您想要单独引用该插件的功能,那么您需要引用 affix.js。

一、用法

可以通过 data 属性或者通过 JavaScript 来使用附加导航(Affix)插件。
1、通过 data 属性:如需向元素添加附加导航(Affix)行为,只需要向需要监听的元素添加 data-spy="affix" 即可。请使用偏移来定义何时切换元素的锁定和移动。
2、通过 JavaScript:您可以通过 JavaScript 手动为某个元素添加附加导航(Affix)

二、通过 CSS 定位

在上面两种使用附加导航(Affix)插件的方式中,您都必须通过 CSS 定位内容。附加导航(Affix)插件在三种 class 之间切换,每种 class 都呈现了特定的状态: .affix、.affix-top 和 .affix-bottom。请按照下面的步骤,来为这三种状态设置您自己的 CSS(不依赖此插件)。
1、在开始时,插件添加 .affix-top 来指示元素在它的最顶端位置。这个时候不需要任何的 CSS 定位。
2、当滚动经过添加了附加导航(Affix)的元素时,应触发实际的附加导航(Affix)。此时 .affix 会替代 .affix-top,同时设置 position: fixed;(由 Bootstrap 的 CSS 代码提供)。
3、如果定义了底部偏移,当滚动到达该位置时,应把 .affix 替换为 .affix-bottom。由于偏移是可选的,假如设置了该偏移,则要求同时设置适当的 CSS。在这种情况下,请在必要的时候添加 position: absolute;。

三、选项

有一些选项是通过 data 属性或 JavaScript 来传递的。下表列出了这些选项:

Bootstrap每天必学之附加导航(Affix)插件

四、实例
附加导航即粘贴在屏幕某处实现锚点功能。
1、基本实例

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

 <div class="container">
 <div class="jumbotron" style="height:150px">
 <h1>Bootstrap Affix</h1>
 </div>
 <div class="row">
 <div class="col-xs-3" id="myScrollspy">
 <ul class="nav nav-pills nav-stacked" data-spy="affix"data-offset-top="150">
  <li class="active">
  <a href="#section-1">第一部分 </a>
  </li>
  <li>
  <a href="#section-2">第二部分</a>
  </li>
  <li>
  <a href="#section-3">第三部分</a>
  </li>
  <li>
  <a href="#section-4">第四部分</a>
  </li>
  <li>
  <a href="#section-4">第五部分</a>
  </li>
 </ul>
 </div>
 <div class="col-xs-9">
 <h2 id="section-1">第一部分</h2>
 <p>
  ...
 </p>
 <h2 id="section-2">第二部分</h2>
 <p>
  ...
 </p>
 <h2 id="section-3">第三部分</h2>
 <p>
  ...
 </p>
 <h2 id="section-4">第四部分</h2>
 <p>
  ...
 </p>
 <h2 id="section-5">第四部分</h2>
 <p>
  ...
 </p>
 </div>

 </div>
 </div>

2、导航的 CSS 部分

ul.nav-pills {
 width: 200px;
}
ul.nav-pills.affix {
 top: 30px;
}
//JavaScript 代替 data-spy="affix" data-offset-top="125"

$('#myAffix').affix({
 offset : {
 top : 150
 }
})

我们默认使用的是 top,当然也可以默认居底 bottom。这个定位方式是直接通过 CSS定位的。

//设置成 bottom

ul.nav-tabs.affix-bottom {
 bottom: 30px;
}
//设置成 bottom

$('#myAffix').affix({
 offset : {
 bottom : 150
 }
})

Affix 包含几个事件,如下:

Bootstrap每天必学之附加导航(Affix)插件

//其他雷同

$('#myAffix').on('affixed-top.bs.affix', function() {
 alert('触发!');
});

如果大家还想深入学习,可以点击这里进行学习,再为大家附3个精彩的专题:

以上就是本文的全部内容,希望对大家的学习有所帮助。 

Javascript 相关文章推荐
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
Nov 23 Javascript
javascript通过className来获取元素的简单示例代码
Jan 10 Javascript
js改变Iframe中Src的方法
May 05 Javascript
jQuery根据元素值删除数组元素的方法
Jun 24 Javascript
基于jquery实现智能提示控件intellSeach.js
Mar 17 Javascript
浅谈js中的引用和复制(传值和传址)
Sep 18 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
Apr 17 jQuery
小程序图片剪裁加旋转的示例代码
Jul 10 Javascript
AngularJS修改model值时,显示内容不变的实例
Sep 13 Javascript
js实现ATM机存取款功能
Oct 27 Javascript
vue中img src 动态加载本地json的图片路径写法
Apr 25 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
Jul 22 jQuery
Bootstrap项目实战之子栏目资讯内容
Apr 25 #Javascript
深入浅析JavaScript中数据共享和数据传递
Apr 25 #Javascript
Bootstrap项目实战之首页内容介绍(全)
Apr 25 #Javascript
Bootstrap每天必学之响应式导航、轮播图
Apr 25 #Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
Apr 25 #Javascript
下雪了 javascript实现雪花飞舞
Aug 02 #Javascript
基于node实现websocket协议
Apr 25 #Javascript
You might like
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
js工具方法弹出蒙版
2013/05/08 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
微信小程序实现团购或秒杀批量倒计时
2020/11/01 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
使用VUE+iView+.Net Core上传图片的方法示例
2019/01/04 Javascript
对vuex中store和$store的区别说明
2020/07/24 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
详解django自定义中间件处理
2018/11/21 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
总结Pyinstaller的坑及终极解决方法(小结)
2020/09/21 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
德国宠物用品、宠物食品及水族馆网上商店:ZooRoyal
2017/07/09 全球购物
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
青年创业培训欢迎词
2014/01/10 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
销售提升方案
2014/06/07 职场文书
工作总结与自我评价
2014/09/18 职场文书
个人剖析材料范文
2014/09/30 职场文书
社保转移委托书范本
2014/10/08 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
应聘教师自荐信
2015/03/26 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL