你如何让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;
}
据此,它应该有效:
http://updates.html5rocks.com/2012/08/Stick-your-landings-position-sticky-lands-in-WebKit
Chrome 23.0.1247.0似乎支持它,但现在它在26.0.1410.43 m中不起作用。
答案 0 :(得分:52)
在短时间内,Chrome在其about:flags部分的标志--enable-experimental-webkit-features
后面启用了此功能。但是,由于浏览器重新绘制的效率低下,它很快就被删除了。
从Chrome 56开始,此功能在没有标记的情况下再次启用。
自Chrome 52.0.2743.116起,此功能再次由标记--enable-experimental-webkit-features
启用。
要回答有关删除原因的更新问题:由于规范未完成,Google(Chromium)删除了对position: sticky
的支持,他们将专注于其他滚动功能在平均时间:
"我们最终希望实施职位:粘性,但当前 实施的设计并不是与现有的完美整合 滚动和合成系统。例如,position:sticky依赖于 updateLayerPositionsAfterDocumentScroll正常运行,但是 功能没有其他目的,否则可以删除。同样的, position:sticky并不适用于合成溢出滚动,这是 现在是驱动引擎滚动的默认机制。
一旦我们按顺序完成了滚动和合成的房子,我们就应该回来了 定位:粘性和以一种集成良好的方式实现该功能 与引擎的其余部分。但是现在,这个CL删除了我们的当前 实现所以我们可以专注于改进我们的滚动实现 我们已经发布的功能。"
强调我的。您可以阅读更多相关信息 here 。
答案 1 :(得分:33)
编辑:您需要通过--enable-experimental-webkit-features
启用about:flags
标记启动。
更新:这不适用于Chrome v35到v51,Chrome 52会使用实验性网络平台功能标记重新启用此功能。从Chrome 56开始position: sticky
开箱即用。
答案 2 :(得分:12)
FilamentGroup为position: sticky
发布了一个很好的polyfill。看看:https://github.com/filamentgroup/fixed-sticky
答案 3 :(得分:5)
如果存在设置了overflow: hidden
属性的父节点,它似乎无法在iOS7 Safari上运行。
答案 4 :(得分:3)
当Chrome切换到版本为28的Blink渲染引擎时,他们删除了Webkit,这是唯一支持此功能的引擎(在Mac和iOS上)。
因此,除非您在Mac或iOS上使用Safari,或在iOS上使用Chrome(目前),否则您将无法在其他浏览器中使用此功能。
很遗憾,这是浮动元素的一种简单方法。
答案 5 :(得分:1)
great news是从Chrome 56开始(截至2016年12月为测试版,2017年1月稳定)位置:粘性现已回到Chrome中。
因此,在不久的将来,除了移动设备的浏览器之外,只有Edge将是所有尚未实现它的浏览器中的唯一一个,但我希望他们也能很快实现它。
答案 6 :(得分:-1)
确实如此-至少现在 查找https://caniuse.com/#feat=css-sticky
您以<thead>
为目标,而Chrome和Blink引擎(Chrome,Edge,Opera)不支持此功能。 Gecko(Mozilla Firefox)和Webkit(Safari)可以。而是尝试将<th>
定位为目标,如下所示。
父项上的overflow: hidden
也会中断position:sticky
请确保包括您的vendor prefixes。
运行该代码段,它应该显示一个实用的粘性标头。
thead > tr > th {
background: white;
position: -webkit-sticky;
position: -moz-sticky;
position: -ms-sticky;
position: -o-sticky;
position: sticky;
top: 10px;
}
<h1>Position sticky</h1>
<table>
<thead>
<tr>
<th>column 1</th>
<th>column 2</th>
<th>column 3</th>
<th>column 4</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</tbody>
</table>