详解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 组件之旅(三):用 Ant 构建组件
Oct 28 Javascript
5分钟理解JavaScript中this用法分享
Nov 09 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
Apr 18 Javascript
js实现网页收藏功能
Dec 17 Javascript
基于jquery实现瀑布流布局
Jun 28 Javascript
在JavaScript中使用JSON数据
Feb 15 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
Aug 19 Javascript
JavaScript获取服务器端时间的方法
Nov 29 Javascript
详解使用JS如何制作简单的ASCII图与单极图
Mar 31 Javascript
Angular2下使用pdf插件的方法详解
Apr 29 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
Dec 07 Javascript
详解element上传组件before-remove钩子问题解决
Apr 08 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中使用与Perl兼容的正则表达式
2006/11/26 PHP
php adodb连接mssql解决乱码问题
2009/06/12 PHP
php下载文件的代码示例
2012/06/29 PHP
ThinkPHP采用原生query实现关联查询left join实例
2014/12/02 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php 实现Hash表功能实例详解
2016/11/29 PHP
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
2016/10/10 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
javascript实现摄像头拍照预览
2019/09/30 Javascript
[02:19]DOTA选手解说齐贺岁
2018/02/11 DOTA
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
Python 类的特殊成员解析
2018/06/20 Python
用pandas中的DataFrame时选取行或列的方法
2018/07/11 Python
python for 循环获取index索引的方法
2019/02/01 Python
基于matplotlib中ion()和ioff()的使用详解
2020/06/16 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
应届行政管理专业个人自我评价
2013/12/28 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
学术会议邀请函范文
2014/01/22 职场文书
手工社团活动方案
2014/02/17 职场文书
品酒会策划方案
2014/05/26 职场文书
基层党员对照检查材料
2014/09/24 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python