【发布时间】:2020-02-22 23:22:08
【问题描述】:
我有一个包装器div.container,里面是div.children。我在第一个孩子上设置position:sticky。我在direction:ltr 上工作得很好,但是在direction:rtl 上粘不工作。
我不确定这是浏览器错误还是我的样式有误。请注意我没有访问html本身的权限,我只能更改css文件而没有js尽可能。
测试于:
Firefox - 通过 ✅
谷歌浏览器 - 失败 ❌
Safari - 失败❌
.container {
margin: 10px;
padding: 0;
border: 1px solid #000;
overflow-x: scroll;
overflow-y: hidden;
width: 500px;
position: relative;
white-space: nowrap;
}
.container.ltr { direction: ltr; }
.container.rtl { direction: rtl; }
.children {
display: inline-block;
margin: 0;
padding: 0;
width: 100px;
height: 100px;
border: 1px solid rgba(0,0,0,0.08);
}
.children.sticky {
position: sticky;
background: #f30;
color: #fff;
}
.container.ltr .children.sticky { left: 0; }
.container.rtl .children.sticky { right: 0; }
<div class="container ltr">
<div class="children sticky">1</div>
<div class="children">2</div>
<div class="children">3</div>
<div class="children">4</div>
<div class="children">5</div>
<div class="children">6</div>
<div class="children">7</div>
<div class="children">8</div>
<div class="children">9</div>
<div class="children">10</div>
</div>
<div class="container rtl">
<div class="children sticky">1</div>
<div class="children">2</div>
<div class="children">3</div>
<div class="children">4</div>
<div class="children">5</div>
<div class="children">6</div>
<div class="children">7</div>
<div class="children">8</div>
<div class="children">9</div>
<div class="children">10</div>
</div>
Chromium 错误报告
https://bugs.chromium.org/p/chromium/issues/detail?id=1140374
【问题讨论】:
-
在 Chrome 上遇到同样的问题。你找到解决办法了吗?
-
即使在 Chrome 80 上甚至在 Safari 13 上也没有运气。这只适用于 Firefox。
-
不直接相关,但可能会在此讨论中提供一些尝试github.com/w3c/csswg-drafts/issues/865