尝试循环通过3个图像,每次只显示一个7秒,然后消失,然后显示序列中的下一个,然后下一个图像。循环需要无限,没有"过渡/褪色"延迟。
这些图像是GIF动画,所以到目前为止,试图将时间与过渡对齐是失败的。
当前使用此:
.images {
margin: auto;
}
.images img {
position: absolute;
-webkit-animation: fade 21s infinite;
animation: fade 21s infinite;
}
@keyframes fade {
0% {
opacity: 1;
}
15% {
opacity: 1;
}
25% {
opacity: 0;
}
90% {
opacity: 0;
}
100% {
opacity: 1;
}
}
-webkit-@keyframes fade {
0% {
opacity: 1;
}
15% {
opacity: 1;
}
25% {
opacity: 0;
}
90% {
opacity: 0;
}
100% {
opacity: 1;
}
}
#img1 {
-webkit-animation-delay: 0s;
animation-delay: 0s;
}
#img2 {
-webkit-animation-delay: -7s;
animation-delay: -7s;
}
#img3 {
-webkit-animation-delay: -14s;
animation-delay: -14s;
}
<div class="images">
<img id="img1" src="https://example.com/gif-1.gif">
<img id="img2" src="https://example.com/gif-2.gif">
<img id="img3" src="https://example.com/gif-3.gif">
</div>
任何帮助都将不胜感激
1条答案
按热度按时间pgpifvop1#
您可以在此定义变量中的持续时间,以控制单个图像的显示时间。
我使用一组关键帧,将每张图像的
opacity
更改为animation-duration
的1
(其余时间更改为0
)。不幸的是,
calc
不能用于定义关键帧的百分比,因此如果您更改图像的数量,您还需要手动更改这些百分比,如代码中的注解所述。网格显示用作
position: relative
和position: absolute
的替代。fetchpriority
用于第一个图像以提高其优先级(因为它是动画的第一个图像,必须尽快加载)。顺便说一句,为了方便访问,你应该让用户能够停止每个动画超过5秒,因为它可能会引起癫痫发作。在任何情况下,旋转图像的速度不要超过每秒3次。