CSS оверлей с анимацией - PullRequest
       23

CSS оверлей с анимацией

0 голосов
/ 13 сентября 2018

Я пытаюсь создать оверлей со следующими html и css

div.relative {
  position: relative;
  width: 400px;
  height: 200px;
  border: 3px solid #73AD21;
}

div.absolute {
  position: absolute;
  top: 50%;
  right: 0;
  width: 200px;
  height: 100px;
  border: 3px solid #73AD21;
  opacity: 1;
  background-color: blue;
}

.overlay {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  background: rgba(0, 0, 0, 0.95);
  color: white;
  z-index: 1;
}

.div1 {
  animation: 750ms 1 forwards ani;
}

@keyframes ani {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}
<h2>
  position: absolute;</h2>

<p>An element with position: absolute; is positioned relative to the nearest positioned ancestor (instead of positioned relative to the viewport, like fixed):</p>

<div class="relative">
  This div element has position: relative;
  <div class="div1">
    This is a div
    <div class="overlay">
      This div element has position: fixed;
    </div>
  </div>

  <div class="absolute">
    This div element has position: absolute;
  </div>
</div>

Я пытаюсь создать наложение, которое должно охватывать всю область.Однако проблема в том, что когда я добавляю анимацию, она выводит абсолютный элемент на передний план, несмотря на то, что анимация не была применена к нему

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Поскольку мой последний ответ не лучшая практика, попробуйте этот.Поэтому добавьте эти стили в div с классом div1:

.div1 {
  animation: 750ms 1 forwards ani;
  position: relative;
  z-index: 2;
}

z-index не работает, потому что позиционированный абсолютный элемент находится на другом уровне, чем фиксированный элемент, вам нужно определить z-indexодного уровня элемента (в данном случае div1 и absolute).z-index также должен иметь относительный атрибут позиции, чтобы он работал ..

0 голосов
/ 19 сентября 2018

(всем, кто ищет ответ) Я обнаружил проблему с этим кодом.Когда мы применяем анимацию непрозрачности со значениями меньше 1, это создает другой контекст стека для этого конкретного элемента и его дочерних элементов, и он накладывал наложение по отношению к этому контексту стека.Я решил эту проблему, убрав из режима анимации-заливку ни один, поскольку это не повлияет на CSS в дальнейшем.

0 голосов
/ 13 сентября 2018

переместите фиксированный элемент вниз, что-то вроде этого

<div class="relative">
  This div element has position: relative;
  <div class="div1">
    This is a div
  </div>

  <div class="absolute">
    This div element has position: absolute;
  </div>
</div>
<div class="overlay">
  This div element has position: fixed;
</div>
...