CSS анимация неправильно заполняет вертикальную высоту? - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь создать эффект прожектора / прожектора, который выделит текст с помощью CSS-анимации. Вот скрипка .

Тем не менее, мой прожектор не достигает верхней части страницы и вместо этого показывает черный фон в различной степени на протяжении всей анимации.

То, что я пытаюсь достичь, выглядит примерно так:

enter image description here

Мне было интересно, есть ли у кого-нибудь идеи относительно того, какизменить мой прожектор для вертикального заполнения всей страницы?

h1 {
  color: green;
  position: absolute;
}

body {
  background-color: black;
  overflow: hidden;
}

.spotlight {
  position: relative;
  width: 10vw;
  height: 0vh;
  border-top: 100vh solid rgba(255, 255, 255, 0.25);
  border-left: 12vw solid transparent;
  border-right: 12vw solid transparent;
  background-color: transparent;
  -webkit-transform-origin: 50% 100% 0;
  z-index: 0;
  -webkit-animation: move 7s ease-in-out;
}

@-webkit-keyframes move {
  0% {
    -webkit-transform: rotate(-30deg) scaleX(0.4);
  }
  50% {
    -webkit-transform: rotate(30deg) scaleX(0.4);
  }
  100% {
    -webkit-transform: rotate(0deg);
  }
}
<html>

<head></head>

<body>

  <h1>
    Some text
  </h1>

  <div class="spotlight spot1"></div>

</body>

</html>

1 Ответ

1 голос
/ 09 июня 2019

Просто используйте display: absolute вместо относительного и немного измените код;)

h1 {
  color: green;
  position: absolute;
  z-index: 1;
}

body {
  background-color: black;
  overflow: hidden;
}

.spotlight {
  position: absolute;
  width: 10vw;
  bottom: -20px;
  border-top: 140vh solid rgba(245, 245, 245, 0.493);
  border-left: 12vw solid transparent;
  border-right: 12vw solid transparent;
  background-color: transparent;
  transform-origin: 50% 100% 0;
  z-index: 0;
  opacity: 1;
  will-change: auto;
  animation: move 7s ease-in-out;
}

@keyframes move {
  0% {
    transform: rotate(-30deg) scaleX(0.4);
  }

  50% {
    transform: rotate(30deg) scaleX(0.4);
  }

  100% {
    transform: rotate(0deg);
  }
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>

<body>
  <h1>
    Some text
  </h1>
  <div class="spotlight spot1"></div>
</body>

</html>
...