为什么不定位:Chrome中的粘性工作?

Pet*_*tah 38 css google-chrome css3

你怎么position: sticky上班的?

我在Chrome 26.0.1410.43 m中尝试了以下操作但它无法正常工作:

thead {
    position: -webkit-sticky;
    position: -moz-sticky;
    position: -ms-sticky;
    position: -o-sticky;
    position: sticky;
    top: 10px;
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/8LRms/

根据这个,它应该工作:

http://updates.html5rocks.com/2012/08/Stick-your-landings-position-sticky-lands-in-WebKit

Chrome 23.0.1247.0似乎支持它,但现在它在26.0.1410.43 m中不起作用.

Tyl*_*erH 50

在很短的时间内,Chrome --enable-experimental-webkit-features在其about:flags部分的标志后面启用了此功能.但是,由于浏览器重新绘制的效率低下,它很快就被删除了.

Chrome 56开始,此功能在没有标志的情况下再次启用.


自Chrome 52.0.2743.116起,此功能--enable-experimental-webkit-features再次由该标志启用.


要回答关于删除原因的更新问题:position: sticky由于规范的未完成性质,Google(Chromium)取消了支持,他们将专注于平均时间内的其他滚动功能:

"我们希望最终实现位置:粘粘的,但目前的实现不与现有的滚动和合成系统很好地结合的方式设计.例如,位置:粘依靠updateLayerPositionsAfterDocumentScroll正常工作,但功能有没有其他目的,否则可以被删除.同样,position:sticky完全不适用于合成溢出滚动,这现在是驱动引擎滚动的默认机制.

一旦我们按顺序获得滚动和合成的房子,我们应该返回到位置:粘性并以与引擎其余部分很好地集成的方式实现该功能.但是现在,这个CL删除了我们当前的实现,因此我们可以专注于改进我们已经发布的滚动功能的实现."

强调我的.你可以在这里阅读更多相关信息.


Ali*_*guy 33

编辑:你需要--enable-experimental-webkit-features通过启用标志启动about:flags.

更新:这不适用于Chrome v35到v51,Chrome 52使用实验性网络平台功能标志重新启用此功能.从Chrome 56开始,position: sticky开箱即用.

  • 我希望支持`<thead>`和`<tr>`成为一流的.具有粘性标题和/或标题标题的滚动表似乎是一种常见的用例. (17认同)
  • 现在的标志是"启用实验性Web平台功能".铬://标志/#使实验性的Web平台的功能 (9认同)
  • 支持在thead元素上粘贴定位使用(并且工作得很漂亮).我注意到它在Chrome 23的一个特定的小/补丁发布之后就崩溃了,我向其中一个Chromium开发者报告过.为什么他们的支持超出了我,因为他们的工作完美无瑕. (4认同)
  • @TaylorMac感谢您的更新.但是,我在Chrome v.35上再次测试了它并且它不起作用(至少不适用于thead元素).此外,caniuse.com表示,在可预见的未来,Chrome中不会出现对此属性的支持.所以,我不知道该说些什么.根据我的阅读,三星的一些人已经在Chrome中接管了这个实现,他们还没有准备好(我在Chromium bug跟踪器上获得有关此特定问题的电子邮件更新,这就是我所知道的).但是,我不明白的是,为什么支持在过去工作得很好时被撕掉了. (2认同)

RWA*_*WAM 12

FilamentGroup发布了一个很好的polyfill for position: sticky.看看:https://github.com/filamentgroup/fixed-sticky


小智 7

如果存在具有overflow: hidden属性集的父节点,它似乎在iOS7 Safari上不起作用.

  • 不错的选择-Chrome 54和Firefox 51都是如此 (2认同)