详解BootStrap中Affix控件的使用及保持布局的美观的方法


Posted in Javascript onJuly 08, 2016

Affix是BootStrap中的一个很有用的控件,他能够监视浏览器的滚动条的位置并让你的导航始终都在页面的可视区域。一开始的时候,导航在页面中是普通的流式布局,占有文档中固定的位置,当页面滚动的时候,导航就自动变成了固定布局(fixed),始终处于用户的视区,下面来说说他的用法。首先来看看他的实现原理。它是通过实时修改页面元素的class属性来实现的

开始的时候应用affix的元素的class中会自动添加affxi-top属性

当滚动条滚动以至于导航快要到页面顶部的时候这时候在元素的class中会将affix-top变为affix

当拖动滚动条到页面底部的时候,affix又会自动变为affix-bottom

以上过程完全有控件自己实现,无须我们干预,我们只需要写好这些状态的css就可以了

如我们可以设置

.affix-top
{
top:150px;
}
.affix
{
top:20px;//通常用bootstrap构建的网站头部都有个导航条
}
.affix-bottom
{
……
}

下面我们看看它的使用方法

1、通过data属性

你只需为需要监听的页面元素添加data-spy="affix"即可。然后使用偏移量来确定一个元素的开和关.

<ul class="nav nav-tabs nav-stacked affix" data-spy="affix"
data-offset-top="190">
<li class="active"><a href="#one">Tutorial One</a></li>
<li><a href="#two">Tutorial Two</a></li>
<li><a href="#three">Tutorial Three</a></li>
</ul>

其中data-offset-top为处于affix-top状态元素距离页面顶端的位置。当滚动到页面顶端的使用我们可以设置".affix"的样式来重新设置其"top"值。

2、通过javascript调用

示例代码如下:

$('#myNav').affix({
offset: {
top: 100,//滚动中距离页面顶端的位置
bottom: function () {//滚动完成时距离页面底部的位置
return (this.bottom = 
$('.bs-footer').outerHeight(true))
}
}
})

HTML代码如下(只展示核心代码):

<ul class="nav nav-tabs nav-stacked affix" id="myNav">
<li class="active"><a href="#one">Tutorial One</a></li>
<li><a href="#two">Tutorial Two</a></li>
<li><a href="#three">Tutorial Three</a></li>
</ul>
……
<div class="bs-footer">
</div>

以上似乎已经介绍完了bootstrap中affix的使用,但是在实际使用的过程中我们会发现,当拖动滚动条的时候使用了affix的页面元素的宽度会发生变化,从而导致页面布局的杂乱,所以我们在定义affix的css中最好写死它的宽度如:

.affix{
width:250px;
}

这样在视窗足够大的时候是没有任何问题的,但是当拖动改变视窗的大小后会发现布局又变乱了,这个问题困扰了我许久,最后通过分析bootcss的源码我发现该网站在所有使用affix的元素的class中都添加了"hidden-print" "hidden-xs" "hidden-sm"这些属性,用于当屏幕不是符合要求的情况下可以隐藏affix,虽然影响了易用性,但是保证了布局无论在哪种情况下都是整齐的。

以上所述是小编给大家介绍的详解BootStrap中Affix控件的使用及保持布局的美观的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
只需20行代码就可以写出CSS覆盖率测试脚本
Apr 24 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
Mar 18 Javascript
jQuery图片渐变特效的简单实现
Jun 25 Javascript
深入理解Angular2 模板语法
Aug 07 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
基于JS对象创建常用方式及原理分析
Jun 28 Javascript
微信小程序开发背景图显示功能
Aug 08 Javascript
微信小程序如何调用图片接口API并居中显示
Jun 29 Javascript
vue $set 给数据赋值的实例
Nov 09 Javascript
JS实现打字游戏
Dec 17 Javascript
JS实现简易留言板(节点操作)
Mar 16 Javascript
ES11屡试不爽的新特性,你用上了几个
Oct 21 Javascript
Augularjs-起步详解
Jul 08 #Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
Jul 08 #Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 #Javascript
Angularjs---项目搭建图文教程
Jul 08 #Javascript
Node.js 文件夹目录结构创建实例代码
Jul 08 #Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
Jul 07 #Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
Jul 07 #Javascript
You might like
PHP网页游戏学习之Xnova(ogame)源码解读(五)
2014/06/23 PHP
php简单截取字符串代码示例
2016/10/19 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
javascript fullscreen全屏实现代码
2009/04/09 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
基于jQuery和CSS3制作响应式水平时间轴附源码下载
2015/12/20 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
js 颜色选择插件
2017/01/23 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
从零开始实现Vue简单的Toast插件
2018/12/03 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
[55:04]海涛DOTA2死魂复燃6.82版本介绍
2014/09/28 DOTA
python解析模块(ConfigParser)使用方法
2013/12/10 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
Python中类型检查的详细介绍
2017/02/13 Python
python保存文件方法小结
2018/07/27 Python
使用Python写一个量化股票提醒系统
2018/08/22 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
python自动发微信监控报警
2019/09/06 Python
Python通过socketserver处理多个链接
2020/03/18 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
护士岗前培训自我评鉴
2014/02/28 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
创先争优活动承诺书
2014/08/30 职场文书
学习考察心得体会
2014/09/04 职场文书
党员进社区活动总结
2015/05/07 职场文书
建党伟业的观后感
2015/06/01 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers