Коден: https://codepen.io/sabeser/pen/NWmzmaG
У меня есть #container, содержащий четыре элемента .box. Каждый элемент .box имеет набор background-image:
Я пытаюсь сделать так, чтобы каждое изображение меняло свою непрозрачность, применяя анимацию pulse: Однако ничего не происходит.
#container {
background-color: orange;
display: flex;
}
.box {
background-image: url(https://cdn.britannica.com/16/234216-050-C66F8665/beagle-hound-dog.jpg);
background-repeat: no-repeat;
background-size: cover;
width: 100px;
height: 100px;
margin: 10px;
}
.box::before {
content: "";
position: absolute;
inset: 0;
opacity: 0;
animation: pulse 2.5s infinite;
}
.box @keyframes pulse {
0% {
opacity: 0;
}
50% {
opacity: 0.1;
}
100% {
opacity: 0;
}
}<div id='container'>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
</div>А @keyframe нельзя комбинировать .box. См. At-правила.






Элемент absolute::before может заполнить всю область элемента .box, используя inset: 0, только если мы установили для элемента .box позиционирование relative. Дочерний элемент absolute затем выровняется по позиции relative.
Значение opacity 0,1 очень тонкое и едва заметное, поэтому я увеличил его.
Элемент ::before заполнил все пространство, но у него не было background-color, поэтому я установил для него белый цвет.
Использование @keyframes вместо #keyframes правильно. Перед ним не нужно писать имя класса.
#container {
background-color : orange;
display : flex;
}
.box {
background-image : url(https://picsum.photos/100/100);
background-repeat : no-repeat;
background-size : cover;
width : 100px;
height : 100px;
margin : 10px;
position : relative; /* added */
}
.box::before {
content : '';
position : absolute;
inset : 0;
opacity : 0;
background-color : #fff; /* added */
animation : pulse 2.5s infinite;
}
@keyframes pulse { /* changed */
0% { opacity : 0; }
50% { opacity : 0.5; } /* changed */
100% { opacity : 0; }
}<div id='container'>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
<div class='box'></div>
</div>
Это
@keyframesне#keyframes. Developer.mozilla.org/en-US/docs/Web/CSS/@keyframes