升级Bootstrap 3时,顺便玩了下Affix——通常用在侧边导航条——这个控件,下面是一些坎坷和心得。(
详细的官方文档)
★:Top
首先就是Top——高度,由于我页面上有固定的顶导航条(用Bootstrap的通常都会有),所以必须调整Top高度。
通用的代码如下
var navHeight = $('.navbar').outerHeight(true) + 10;
$sideBar.affix({
offset: {
top: navHeight
}
});
加上10px的余量是为了顶导航条和下面内容之间的间隙。其实也可以自动计算,只是太麻烦偷个懒。另外如果还用scrollspy的话(通常也都会用),也需要用上面的navHeight设置偏移量——offset。
$body.scrollspy({
target: '.bs-sidebar',
offset: navHeight
});
到这都OK,下面都是麻烦事。
★:Link点击后的位置偏移
点击侧导航条时,页面上指定的Link会滚动过高,被顶导航条遮住。这个貌似不是Affix的问题,而是顶导航条固定位置的原因。需要用如下方式hack掉——copy自官方网站的css。
/* Janky fix for preventing navbar from overlapping */
h1[id] {
padding-top: 80px;
margin-top: -45px;
}
原理是比如想要35px的间隙,不能直接写35px。需要
- top padding设置成80px,防止顶导航条遮挡。
- 然后再设置top margin为-45px,以达到35px的效果。
折腾吧?
★:滚动页面时尺寸会改变
还有个问题就是滚动页面,当侧边导航条浮起时会改变尺寸。
参考了官网的源码,最终也没有找到理想的解决办法。我猜测原因在于官网是两边留余白的方式,这种方式下,affix的宽度只有在页面尺寸变化到达BS3的screen阈值时才会跟着变化,相对稳定。我自己的则是100%伸展的布局。
我找到折衷的办法是写死affix尺寸,让它和浮起时尺寸相同。但这样就导致affix无法响应页面宽度细微的变化!
/* Show and affix the side nav when space allows it */
@media screen and (min-width: 992px) {
...
/* Widen the fixed sidebar */
.bs-sidebar,.bs-sidebar.affix,.bs-sidebar.affix-bottom {
width: 223px;
}
...
}
@media screen and (min-width: 1200px) {
/* Widen the fixed sidebar again */
.bs-sidebar,.bs-sidebar.affix-bottom,.bs-sidebar.affix {
width: 299px;
}
}
“.bs-sidebar,”是追加的内容,即affix的非浮起状态尺寸。
如果有哪位知道更好的解决方案,还望赐教。
分享到:
相关推荐
bootstrap笔记Bootstrap 移动设备优先。 所有列默认都是左浮动 为确保适当的绘制和触屏缩放,加入下面的meta标签
Bootstrap-affix
bootstrap作为目前主流框架之一,会使用这个框架会使你更快速开发响应式web、移动端web!
李炎恢Bootstrap讲义笔记 李炎恢Bootstrap讲义笔记 李炎恢Bootstrap讲义笔记
bootstrap-affix的demo,分为data实现和javascript实现两种,效果还可以
bootstrap笔记总结
bootstrap一些笔记
Bootstrap笔记[收集].pdf
bootstrap笔记(每一个知识点都有单独的示例)非常全,容易上手,学习bootstrap的利器
bootstrap学习笔记-html5 各类简单案例,适合初学者
这是李恢弘老师教bootstrap视频的讲义,我好不容易找到的,免费分享出来资源共享,让大家快速学习bootstrap
tutorials point 原版bootstrap教程,带有笔记
自己整理的bootstrap学习笔记,非常值得拥有,需要的朋友,可以下载学习。
李炎恢bootstrap 讲义笔记代码全套,李炎恢 bootstrap 讲义 代码
李炎恢Bootstrap讲义笔记解压.zip
附加导航(Affix)插件允许某个 <div> 固定在页面的某个位置。接下来通过本文给大家介绍Bootstrap 附加导航(Affix)插件实例详解,感兴趣的朋友一起看看吧