固定位置上的CSS背景图片未在IE11上显示:固定的伪元素

时间:2019-10-04 08:32:22

标签: css internet-explorer css-position pseudo-element

JSfiddle演示了问题:

https://jsfiddle.net/qjtbchpu/11/

<div id="container">
  <article>
    blah
  </article>
  <article>
    blah
  </article>
</div>

#container::before {
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  content: '';
  background: url(https://imgur.com/qYUPJgv.jpg);
  position: fixed;
}

article {
  position: relative;
  height: 500px;
  background: rgba(255, 255, 255, .75);
  margin: 4em;
  padding: 2em;
  border: 1px solid black
}

这在我尝试过的所有主要浏览器中均能完美运行,除了IE11,仅当我使用position:absolute时,图片才出现。

任何已知的解决方案或解决方法?谢谢

1 个答案:

答案 0 :(得分:1)

IE11根本不会在其中加载巨大的图像,在创建伪元素时猜测,它们不在缓存中。您的代码对某些简单/较小的图像都可以正常工作,但是对于较大的图像(加载时间很长),您可以使用以下技巧:

#container::before {
    left: 0;
    right: 0;
    bottom: 0;
    top: 0;
    content: url(https://imgur.com/qYUPJgv.jpg);
    background: url(https://imgur.com/qYUPJgv.jpg);
    background-size: cover;
    text-indent: -9999px;
    overflow: hidden;
    position: fixed;
}
article {
    position: relative;
    height: 500px;
    background: rgba(255, 255, 255, .75);
    margin: 4em;
    padding: 2em;
    border: 1px solid black
}
<div id="container">
    <article>
        blah
    </article>
    <article>
        blah
    </article>
</div>

经过测试,它也可以在JSFiddle上正常工作。

强制浏览器加载图像的关键行是:

content: url(https://imgur.com/qYUPJgv.jpg);