Фоновое изображение CSS не отображается в IE11, когда находится в положении: фиксированный псевдоэлемент - PullRequest
2 голосов
/ 04 октября 2019

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, где фотография появляется только при использованиипозиция: абсолютная, которая не дает желаемого эффекта.

Какие-нибудь известные решения или обходные пути? Спасибо

1 Ответ

1 голос
/ 04 октября 2019

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);
...