声明:
我认为这与this reported bug有关,与this other question非常相似,但修正建议不适用。
如果我的div
粘贴,即它有position: fixed; top: 0px;
。
我希望它在身体/屏幕的顶部附着/粘着。
我注意到(仅在Firefox中)将过滤器应用于其父级将使位置采用父元素(我添加过滤器的元素)作为position: fixed;
引用,而不是正文。 / p>
示例(https://jsfiddle.net/sz6xtfno/):
(注意div.sticky
更改位置,在Firefox中应该是fixed
// just for demo purpose:
const sticky = document.querySelector('.sticky');
const container = sticky.parentElement;
setTimeout(() => container.classList.add('add-filter'), 1000);
html,
body {
margin: 0px;
padding: 0px;
height: 100%;
}
.sticky {
display: block;
position: fixed;
top: 0px;
}
.add-filter {
-webkit-filter: sepia(10%) grayscale(60%);
-moz-filter: sepia(10%) grayscale(60%);
filter: sepia(10%) grayscale(60%);
}
div {
background-color: #ddf;
padding: 10px;
margin: 0px;
position: relative;
}
<div>
<p>Previous element</p>
</div>
<div class="container">
<p>This is the container</p>
<div class="sticky">
<p>This is a sticky element</p>
</div>
</div>
问题:
怎么纠正这个?我正在寻找一种没有JavaScript的解决方案,因为这个问题似乎在加扰定位计算。
答案 0 :(得分:0)
奇怪的行为...... 要解决特定情况 - 而不是可能的错误 - ,您可以将粘性div放在容器外面。如果你想过滤它,你只需要添加add-filter类。
<div>
<p>Previous element</p>
</div>
<div class="sticky add-filter">
<p>This is a sticky element</p>
</div>
<div class="container add-filter">
<p>This is the container</p>
</div>