Firefox

时间:2017-02-05 06:30:10

标签: javascript html css firefox

声明:
我认为这与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的解决方案,因为这个问题似乎在加扰定位计算。

1 个答案:

答案 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>

请参阅此小提琴https://jsfiddle.net/4ba7g7ws/1/