Bootstrap 4取消了affix,怎么办?

官方说明如下:

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这个数值,来自于
    Bootstrap 4取消了affix,怎么办?_第1张图片
    这个截图
  • 因为导航在position:fixed;状态时脱离了文档流,所以它的宽度会有问题,需要用js给导航设置width,设成与父元素宽度一致。
  • 其他按github的说明文档搞就行了。

其他插件先不测试了。

你可能感兴趣的:(Bootstrap 4取消了affix,怎么办?)