【发布时间】:2019-01-18 10:33:21
【问题描述】:
根据CanIUse,Safari 和position:sticky 在overflow:auto 元素中存在一个已知问题:
将溢出设置为自动的父级将阻止 position:sticky 在 Safari 中工作
但是,这正是我需要的用例。我有一个可滚动的 div,它被细分为两列。右列应该是粘性的并且永远不会移动,即使滚动整个 div 也是如此。我在右列上使用position:sticky 的原因是我希望用户仍然能够使用右列上的光标滚动左列。这是我发现唯一有效的解决方案。
Firefox / Chrome 的工作示例如下: http://cssdeck.com/labs/zfiuz4pc 滚动时橙色区域保持固定,但在 Safari 中不会。
上面的例子对我的问题有一些不必要的包装,但我想尽可能地复制我想让这段代码在其中工作的环境。它的基本要点是我有这个:
<div class="modal-content">
<div class="left-content">
</div>
<div class="sticky-element">
</div>
</div>
还有 CSS:
.modal-content {
display: flex;
overflow: auto;
flex-flow: row nowrap;
}
.left-content {
flex: 0 0 300px;
}
.sticky-element {
position: sticky;
top: 0;
right: 0;
width: 200px;
}
同样,这在 FF/Chrome 中有效,但在 Safari 中无效。有没有办法让它在所有浏览器中工作?或者,即使将鼠标光标悬停在粘性元素上,我也可以使用其他方法来保持可滚动性?
【问题讨论】:
标签: css safari overflow sticky