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

#css #linear-gradients

#css #линейные градиенты

Вопрос:

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

Вот мой код до сих пор (сделано на codepen.io ):

HTML

 <div class="fade"></div>
 

CSS

 body {
  margin: 0;
}

.fade {
  background-image: linear-gradient(0deg, red, blue, red);
  height: 100vh;
  width: 100%;
  animation: revolve 1s infinite linear;
}

@keyframes revolve {
  from {
    transform: scale3d(1,1,1) rotateZ(0deg);
  }
  to {
    transform: scale3d(1,1,1) rotateZ(360deg);
  }
}
 

Изначально у меня был scale3d как (2,2,1). Изменение его на (1,1,1) ничего не решило. Я также пытался изменить высоту и ширину на более 100 Вт и установить фоновое положение центра center, но ни одно из них не сработало.

Вот codepen.

Ответ №1:

Используйте vmax единицу, как показано ниже, чтобы создать большой переполненный квадрат:

 body {
  margin: 0;
  overflow:hidden;
}

.fade {
  background-image: linear-gradient(0deg, red, blue, red);
  position:absolute;
  height: 200vmax;
  width: 200vmax;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  animation: revolve 1s infinite linear;
}

@keyframes revolve {
  to {
    transform:translate(-50%,-50%) rotate(360deg);
  }
} 
 <div class="fade"></div> 

Вы можете упростить с помощью псевдоэлемента:

 html::before {
  content:"";
  background-image: linear-gradient(0deg, red, blue, red);
  position:fixed;
  top:-50vmax;
  bottom:-50vmax;
  left:-50vmax;
  right:-50vmax;
  animation: revolve 1s infinite linear;
}

@keyframes revolve {
  to {
    transform: rotate(360deg);
  }
}