详解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中的数学函数
Apr 04 Javascript
Jquery 常用方法经典总结
Jan 28 Javascript
jquery ajaxSubmit 异步提交的简单实现
Feb 28 Javascript
什么是 AngularJS?AngularJS简介
Dec 06 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
Sep 02 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
Dec 01 Javascript
jQuery实现简单滚动动画效果
Apr 07 Javascript
浅谈移动端之js touch事件 手势滑动事件
Nov 07 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
Sep 19 Javascript
vue的过滤器filter实例详解
Sep 17 Javascript
详解ES6数组方法find()、findIndex()的总结
May 12 Javascript
vue element-ui中table合计指定列求和实例
Nov 02 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 安全过滤函数代码
2011/05/07 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
非常实用的php验证码类
2016/05/15 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
jquery 学习之二 属性相关
2010/11/23 Javascript
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
JavaScript实现百度搜索框效果
2020/03/26 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
[02:35]DOTA2英雄基础教程 狙击手
2014/01/14 DOTA
Python复制文件操作实例详解
2015/11/10 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
WIn10+Anaconda环境下安装PyTorch(避坑指南)
2019/01/30 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
电子狗项圈:eDog Australia
2019/12/04 全球购物
园林资料员岗位职责
2013/12/30 职场文书
最新优秀教师个人先进事迹材料
2014/05/06 职场文书
新农村建设标语
2014/06/24 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
电气工程师岗位职责
2015/02/12 职场文书
学习委员竞选稿
2015/11/20 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书