详解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 相关文章推荐
[Web]防止用户复制页面内容和另存页面的方法
Feb 06 Javascript
面向对象的编程思想在javascript中的运用上部
Nov 20 Javascript
一个可绑定数据源的jQuery数据表格插件
Jul 17 Javascript
js各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
jquery 查找iframe父级页面元素的实现代码
Aug 28 Javascript
javascript全局变量封装模块实现代码
Nov 28 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
Nov 19 Javascript
JavaScript使用Range调色及透明度实例
Sep 25 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
Nov 02 Javascript
Vue数据驱动模拟实现4
Jan 12 Javascript
Node.js Mongodb 密码特殊字符 @的解决方法
Apr 11 Javascript
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 jQuery
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 fread()使用技巧
2010/01/22 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
微信小程序中遇到的iOS兼容性问题小结
2018/11/14 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
JS实现单张或多张图片持续无缝滚动的示例代码
2020/05/10 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
python迭代器与生成器详解
2016/03/10 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
python使用rpc框架gRPC的方法
2018/08/24 Python
在Python中增加和插入元素的示例
2018/11/01 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Python 面向对象部分知识点小结
2020/03/09 Python
python中最小二乘法详细讲解
2021/02/19 Python
实例讲解CSS3中的border-radius属性
2015/08/18 HTML / CSS
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
飞越疯人院观后感
2015/06/09 职场文书
养成教育工作总结
2015/08/13 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
MySQL常用慢查询分析工具详解
2022/08/14 MySQL