官方说明如下:
Dropped the Affix jQuery plugin. We recommend using a position: sticky
polyfill instead.
See the HTML5 Please entry for details and specific polyfill recommendations.
If you were using Affix to apply additional, non-position
styles, the polyfills might not support your use case.
One option for such uses is the third-party ScrollPos-Styler library.
也就是说,按照官爷说法,得用position: sticky;
的polyfill代替。注意,不是直接用position: sticky;
,因为就连IE11都不支持,Chrome也不支持而且不打算支持position: sticky;
!坑爹么?
官爷给的链接里面,推荐了两个插件:
Use Fixed-sticky for simple top or bottom aligned stickies.
Use Stickyfill for a wider range of use cases with top aligned sticky positioned blocks and table cells.
然后官爷又说,如果你足够倒霉的话,你可以用 ScrollPos-Styler这个库。
好在我还有一些关于sticky的jQuery插件可以试试:
http://www.jianshu.com/p/97cb265ebf52
测试:Fixed-sticky
- 导航的父元素必须设高度,因为导航只能在父元素内移动。而且这个高度必须跟旁边的内容列的高度一致。实现高度一致的办法,网上没有很完美的解决办法,通常用js,如果内容列有图片,就需要等所有图片加载完成之后再进行js计算,让两列等高。然后还有一个问题,就是在特小屏下,侧边栏跟正文区是上下排列的,不再需要等高,让侧边栏保持自己的自动高度即可,所以来一段CSS:
@media (max-width: 543px) {
.bd-sidebar {
height: auto !important;
}
}
- 如果直接给侧边栏导航本身设了
top: 50px
,那么久不用必须给导航加.fixedsticky
。关于50px
这个数值,来自于
- 因为导航在
position:fixed;
状态时脱离了文档流,所以它的宽度会有问题,需要用js给导航设置width
,设成与父元素宽度一致。 - 其他按github的说明文档搞就行了。
其他插件先不测试了。