我有一个非常简单的需求:使元素在屏幕右侧粘性固定。
在Firefox中所有工作正常,但在Chrome中,right: 0属性被忽略。我说没关系,我可以使用left: calc(100% - 80px);来实现我的目标,但这是一种幸运的情况,当我知道粘性元素的宽度时。
然而,接下来让我大吃一惊:虽然上述的解决方法按预期工作(元素粘在右侧),但 left: 100%; 和 left: 2000%也同样有效,而且不会触发溢出(在Chrome和Firefox中测试)。我显然缺少了什么。也许我不理解粘性元素的左右定位,尽管Firefox和Chrome之间明显存在差异。 left: calc(100% - var(--element-width))完全有道理,但有人能解释一下吗:为什么right被忽略?为什么left: 100%和left: 2000%也有效(即它将元素定位在我期望的right: 0位置,当它明显应该溢出时)?
在Firefox中所有工作正常,但在Chrome中,right: 0属性被忽略。我说没关系,我可以使用left: calc(100% - 80px);来实现我的目标,但这是一种幸运的情况,当我知道粘性元素的宽度时。
然而,接下来让我大吃一惊:虽然上述的解决方法按预期工作(元素粘在右侧),但 left: 100%; 和 left: 2000%也同样有效,而且不会触发溢出(在Chrome和Firefox中测试)。我显然缺少了什么。也许我不理解粘性元素的左右定位,尽管Firefox和Chrome之间明显存在差异。 left: calc(100% - var(--element-width))完全有道理,但有人能解释一下吗:为什么right被忽略?为什么left: 100%和left: 2000%也有效(即它将元素定位在我期望的right: 0位置,当它明显应该溢出时)?
.wrapper{
width:100%;
position:relative;
}
.container{
height: 2000px;
}
.floater{
position:sticky;
height:200px;
width:80px;
background:red;
top:200px;
right:0;
}
<div class="wrapper">
<div class="container">
<div class="floater">
hei!
</div>
</div>
</div>