详解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 相关文章推荐
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 Javascript
js 表单提交后按钮变灰的实例代码
Aug 16 Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 Javascript
JavaScript通过字符串调用函数的实现方法
Mar 18 Javascript
详解JavaScript中的every()方法
Jun 08 Javascript
基于JQuery实现图片轮播效果(焦点图)
Feb 02 Javascript
AngularJs中route的使用方法和配置
Feb 04 Javascript
JavaScript设计模式之代理模式简单实例教程
Jul 03 Javascript
微信小程序获取当前位置和城市名
Nov 13 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
Apr 14 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 Javascript
在HTML5 localStorage中存储对象的示例代码
Apr 21 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
一个图形显示IP的PHP程序代码
2007/10/19 PHP
PHP clearstatcache()函数详解
2010/03/02 PHP
如何实现php图片等比例缩放
2015/07/28 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
理解JAVASCRIPT中hasOwnProperty()的作用
2013/06/05 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
js select option对象小结
2013/12/20 Javascript
js中replace的用法总结
2013/12/27 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
用Python的Django框架编写从Google Adsense中获得报表的应用
2015/04/17 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
python批量修改文件编码格式的方法
2018/05/31 Python
使用python+whoosh实现全文检索
2019/12/09 Python
Python操作Jira库常用方法解析
2020/04/10 Python
Python类成员继承重写的实现
2020/09/16 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
如何写你的创业计划书
2014/01/07 职场文书
宣传部部长竞选演讲稿
2014/04/26 职场文书
教师业务培训方案
2014/05/01 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
文员求职信
2014/07/15 职场文书
生物工程专业求职信
2014/09/03 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
导游词之安徽九华山
2019/09/18 职场文书
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers