使用CSS循环在图像之间交叉淡入淡出

Rac*_*rma 16 css fade keyframe

我想在一个循环中的图像之间淡出(比如这里的结果-jsfiddle.net/5M2PD)但纯粹通过CSS,没有JavaScript.我尝试使用关键帧,但我没有成功.请帮忙.

@keyframes cf3FadeInOut {
    0% {
        opacity:1;
    }
    45% {
        opacity:1;
    }
    55% {
        opacity:0;
    }
    100% {
        opacity:0;
    }
}

#cf3 img.top {
   animation-name: cf3FadeInOut;
   animation-timing-function: ease-in-out;
   animation-iteration-count: infinite;
   animation-duration: 10s;
   animation-direction: alternate;
}
Run Code Online (Sandbox Code Playgroud)

val*_*als 27

我把你的小提琴作为基础,并使其无脚本工作.

更新的演示

我需要为HTML设置一个id

<div class="fadein">
    <img id="f3" src="http://i.imgur.com/R7A9JXc.png">
    <img id="f2" src="http://i.imgur.com/D5yaJeW.png">
    <img id="f1" src="http://i.imgur.com/EUqZ1Er.png">
</div>
Run Code Online (Sandbox Code Playgroud)

CSS是:

.fadein img {
    position:absolute;
    left:-65px;
    top:0;
    -webkit-animation-name: fade;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-duration: 6s;
    animation-name: fade;
    animation-iteration-count: infinite;
    animation-duration: 6s;
}

@-webkit-keyframes fade {
    0% {opacity: 0;}
    20% {opacity: 1;}
    33% {opacity: 1;}
    53% {opacity: 0;}
    100% {opacity: 0;}
}
@keyframes fade {
    0% {opacity: 0;}
    20% {opacity: 1;}
    33% {opacity: 1;}
    53% {opacity: 0;}
    100% {opacity: 0;}
}

#f1 {
    background-color: lightblue;
}
#f2 {
    -webkit-animation-delay: -4s;
    background-color: yellow;
}
#f3 {
    -webkit-animation-delay: -2s;
    background-color: lightgreen;
}
Run Code Online (Sandbox Code Playgroud)

我正在设置关键帧,以便在aprox 1/3的时间内可见,并进行适当的转换.然后我为每个图像设置不同的延迟,以便它们交替.如果您需要完整的浏览器支持,则需要更多供应商前缀.我使用了-webkit-和bare属性,以便你明白了.

  • @alessadro,关键帧将不透明度更改为33%,因为有3个元素。您需要将其更改为50%以调整2个元素 (2认同)