详解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 相关文章推荐
js数字输入框(包括最大值最小值限制和四舍五入)
Nov 24 Javascript
jQuery EasyUI 的EasyLoader功能介绍
Sep 12 Javascript
IE下写xml文件的两种方式(fso/saveAs)
Aug 05 Javascript
jQuery实现HTML5 placeholder效果实例
Dec 09 Javascript
vue.js实现仿原生ios时间选择组件实例代码
Dec 21 Javascript
Bootstrap Table使用整理(一)
Jun 09 Javascript
bootstrap daterangepicker汉化以及扩展功能
Jun 15 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
Jul 18 jQuery
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
Apr 08 Javascript
JavaScript实现移动端弹窗后禁止滚动
May 25 Javascript
微信小程序实现带放大效果的轮播图
May 26 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
Aug 07 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
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
php调用mysql数据 dbclass类
2011/05/07 PHP
php中过滤非法字符的具体实现
2013/10/29 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
php自定义函数实现JS的escape的方法示例
2016/07/07 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
js实现的简洁网页滑动tab菜单效果代码
2015/08/24 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
javascript的BOM
2016/05/03 Javascript
基于Bootstrap3表格插件和分页插件实例详解
2016/05/17 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
vue2.0实现音乐/视频播放进度条组件
2018/06/06 Javascript
vue-cli history模式实现tomcat部署报404的解决方式
2019/09/06 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
python 字典中文key处理,读取,比较方法
2018/07/06 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
python学生信息管理系统(初级版)
2018/10/17 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
Tensorflow训练MNIST手写数字识别模型
2020/02/13 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
2015新员工试用期工作总结
2014/12/12 职场文书
入党个人总结范文
2015/03/02 职场文书
筑梦中国心得体会
2016/01/18 职场文书