详解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 相关文章推荐
提高代码性能技巧谈—以创建千行表格为例
Jul 01 Javascript
JavaScript的变量作用域深入理解
Oct 25 Javascript
IE与firefox下Dhtml的一些区别小结
Dec 02 Javascript
JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题
Aug 12 Javascript
Checbox的操作含已选、未选及判断代码
Nov 07 Javascript
jQuery移除元素自动解绑事件实现思路及代码
May 31 Javascript
Bootstrap按钮下拉菜单组件详解
May 10 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
Aug 08 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
Dec 26 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
Dec 20 Javascript
vue组件中使用props传递数据的实例详解
Apr 08 Javascript
小程序接入腾讯位置服务的详细流程
Mar 03 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积分兑换接口实例
2015/02/09 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
node-http-proxy修改响应结果实例代码
2016/06/06 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
vue-router传参用法详解
2019/01/19 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
python模块常用用法实例详解
2019/10/17 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
Python+OpenCV图像处理——实现轮廓发现
2020/10/23 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
美国在线家装零售商:Build.com
2016/09/02 全球购物
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
集世界奢侈品和设计师品牌的意大利精品买手店:Tessabit
2019/08/17 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
法学专业个人求职信
2013/09/26 职场文书
历史系自荐信范文
2013/12/24 职场文书
内科护士节演讲稿
2014/09/11 职场文书
先进学校事迹材料
2014/12/30 职场文书
学期个人自我总结
2015/02/13 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书