Как создать анимацию пульсирующего свечения в CSS?
Мне нравится, как этот сайт заставляет их кольца светиться и пульсировать, и хотел бы знать, как они это сделали.
Я могу сделать что-то похожее, но я не очень хорош.
Так что это все, что я смог понять, но, похоже, это не сработало.
CSS:
glowycircleouter.blue .glow4 {
box-shadow: 0 0 25px #287ec6;
}
.glowycircleouter .glow4 {
-webkit-animation: glowyglow 3s 2250ms infinite;
-moz-animation: glowyglow 3s 2250ms infinite;
-ms-animation: glowyglow 3s 2250ms infinite;
-o-animation: glowyglow 3s 2250ms infinite;
animation: glowyglow 3s 2250ms infinite;
animation-name: glowyglow;
animation-duration: 3s;
animation-timing-function: initial;
animation-delay: 2250ms;
animation-iteration-count: infinite;
animation-direction: initial;
animation-fill-mode: initial;
animation-play-state: initial;
}
.glowycircleouter .glow4 {
opacity: 0;
display: block;
position: absolute;
left: 50%;
top: 50%;
width: 200%;
height: 200%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
border-radius: 50%;
}
HTML:
<span class="glow4"></span>
1 ответ
Потоки, связанные в комментариях, полезны, но я не думаю, что это точный дубликат, потому что этот немного сложнее из-за необходимости нескольких колец.
Мы можем создать этот эффект, анимируя transform: scale()
а также opacity
элементов. Здесь нам нужно более 1 элемента, потому что на связанном веб-сайте мы можем увидеть по крайней мере 3 кольца в любой данный момент времени (тот, который появляется, тот, который находится на своем пике, тот, который исчезает). Добавляя одну и ту же анимацию к двум псевдоэлементам, внутренний элемент (span
) и задержав анимацию на двух из них, мы можем добиться необходимого эффекта анимации.
div {
position: relative;
height: 100px;
width: 100px;
border-radius: 50%;
margin: 50px;
border: 2px solid white;
}
div:before,
div:after, span {
position: absolute;
content: '';
height: 100%;
width: 100%;
top: 0%;
left: 0%;
border-radius: 50%;
box-shadow: 0 0 15px #287ec6;
animation: glow-grow 2s ease-out infinite;
}
div:after {
animation-delay: .66s;
}
span{
animation-delay: 1.33s;
}
@keyframes glow-grow {
0% {
opacity: 0;
transform: scale(1);
}
80% {
opacity: 1;
}
100% {
transform: scale(2);
opacity: 0;
}
}
body {
background: black;
}
<div>
<span></span>
</div>