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 相关文章推荐
json2.js的初步学习与了解
Oct 06 Javascript
Prototype源码浅析 Enumerable部分之each方法
Jan 16 Javascript
JavaScript中判断函数、变量是否存在
Jun 10 Javascript
JavaScript中的Math.atan2()方法使用详解
Jun 15 Javascript
javascript拖拽应用实例
Mar 25 Javascript
javascript 动态脚本添加的简单方法
Oct 11 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
Oct 13 Javascript
详解vue-cli脚手架中webpack配置方法
Aug 22 Javascript
Vue使用mixin分发组件的可复用功能
Sep 01 Javascript
vue项目初始化到登录login页面的示例
Oct 31 Javascript
javascript+css实现俄罗斯方块小游戏
Jun 28 Javascript
JavaScript 如何计算文本的行数的实现
Sep 14 Javascript
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
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
javascript获取本机操作系统类型的方法
2015/08/13 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
Javascript中作用域的详细介绍
2016/10/06 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
微信小程序 页面跳转传值实现代码
2017/07/27 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
详解Angular5路由传值方式及其相关问题
2018/04/28 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
Python2中的raw_input() 与 input()
2015/06/12 Python
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
Python的UTC时间转换讲解
2019/02/26 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
2019/07/24 Python
python实现邮件自动发送
2019/08/10 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
运动会入场解说词300字
2014/01/25 职场文书
土地租赁意向书
2014/07/30 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
政工例会汇报材料
2014/08/26 职场文书
2014年营销工作总结
2014/11/22 职场文书
2014年应急工作总结
2014/12/11 职场文书
2019年大学推荐信
2019/06/24 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python