详解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 相关文章推荐
JavaScript监听和禁用浏览器回车事件实例
Jan 31 Javascript
JS根据生日算年龄的方法
May 05 Javascript
jQuery点击按钮弹出遮罩层且内容居中特效
Dec 14 Javascript
jQuery实现的简单拖拽功能示例
Sep 13 Javascript
jQuery实现标签页效果实战(4)
Feb 08 Javascript
几行js代码实现自适应
Feb 24 Javascript
vue.js的安装方法
May 12 Javascript
Three.js如何实现雾化效果示例代码
Sep 27 Javascript
微信小程序顶部导航栏滑动tab效果
Jan 28 Javascript
弱类型语言javascript中 a,b 的运算实例小结
Aug 07 Javascript
javascript/jquery实现点击触发事件的方法分析
Nov 11 jQuery
用javascript制作qq注册动态页面
Apr 14 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求圆周率的简单实现方法
2016/05/30 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
模仿jQuery each函数的链式调用
2009/07/22 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
jquery+css3实现网页背景花瓣随机飘落特效
2015/08/17 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
javascript实现延时显示提示框特效代码
2016/04/27 Javascript
Google 地图API Map()构造器详解
2016/08/06 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
微信小程序实战之上拉(分页加载)效果(2)
2017/04/17 Javascript
浅谈Angular4实现热加载开发旅程
2017/09/08 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
vue 获取url里参数的两种方法小结
2020/11/12 Javascript
Python简单生成随机数的方法示例
2018/03/31 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
解析Python3中的Import
2019/10/13 Python
Python实现平行坐标图的绘制(plotly)方式
2019/11/22 Python
pycharm快捷键汇总
2020/02/14 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
环境工程专业个人求职信
2013/12/05 职场文书
领导检查欢迎词
2014/01/14 职场文书
村官工作鉴定评语
2014/01/27 职场文书
保护环境倡议书100字
2014/05/19 职场文书
建筑安全标语
2014/06/07 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python