Multiple image cross fading in CSS - without (java) script

前端 未结 2 817
悲&欢浪女
悲&欢浪女 2020-11-29 08:39

Is it possible to cross fade 5 images in CSS, without using java script? I have found a similar question: css3 image crossfade (no javascript) , however, it has only the CS

2条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-29 09:38

    This can easily be done with CSS3 if you know how many images you have.

    jsFiddle: http://jsfiddle.net/hajmd/

    #crossfade > img { 
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0px;
        left: 0px;
        color: transparent;
        opacity: 0;
        z-index: 0;
        -webkit-backface-visibility: hidden;
        -webkit-animation: imageAnimation 30s linear infinite 0s;
        -moz-animation: imageAnimation 30s linear infinite 0s;
        -o-animation: imageAnimation 30s linear infinite 0s;
        -ms-animation: imageAnimation 30s linear infinite 0s;
        animation: imageAnimation 30s linear infinite 0s; 
    }
    

    The "30s" at "-webkit-animation: imageAnimation 30s linear infinite 0s;" tells that the animation for each image will last 30 seconds in infinete number of times.

    #crossfade > img:nth-child(2)  { 
        background-image: url(../images/2.jpg);
        -webkit-animation-delay: 6s;
        -moz-animation-delay: 6s;
        -o-animation-delay: 6s;
        -ms-animation-delay: 6s;
        animation-delay: 6s; 
    }
    #crossfade > img:nth-child(3) { 
        background-image: url(../images/3.jpg);
        -webkit-animation-delay: 12s;
        -moz-animation-delay: 12s;
        -o-animation-delay: 12s;
        -ms-animation-delay: 12s;
        animation-delay: 12s; 
    }
    #crossfade > img:nth-child(4) { 
        background-image: url(../images/4.jpg);
        -webkit-animation-delay: 18s;
        -moz-animation-delay: 18s;
        -o-animation-delay: 18s;
        -ms-animation-delay: 18s;
        animation-delay: 18s; 
    }
    #crossfade > img:nth-child(5) { 
        background-image: url(../images/5.jpg);
        -webkit-animation-delay: 24s;
        -moz-animation-delay: 24s;
        -o-animation-delay: 24s;
        -ms-animation-delay: 24s;
        animation-delay: 24s; 
    }
    
    @-webkit-keyframes imageAnimation { 
        0% { opacity: 0;
        -webkit-animation-timing-function: ease-in; }
        8% { opacity: 1;
             -webkit-animation-timing-function: ease-out; }
        17% { opacity: 1 }
        25% { opacity: 0 }
        100% { opacity: 0 }
    }
    
    @-moz-keyframes imageAnimation { 
        0% { opacity: 0;
        -moz-animation-timing-function: ease-in; }
        8% { opacity: 1;
             -moz-animation-timing-function: ease-out; }
        17% { opacity: 1 }
        25% { opacity: 0 }
        100% { opacity: 0 }
    }
    
    @-o-keyframes imageAnimation { 
        0% { opacity: 0;
        -o-animation-timing-function: ease-in; }
        8% { opacity: 1;
             -o-animation-timing-function: ease-out; }
        17% { opacity: 1 }
        25% { opacity: 0 }
        100% { opacity: 0 }
    }
    
    @-ms-keyframes imageAnimation { 
        0% { opacity: 0;
        -ms-animation-timing-function: ease-in; }
        8% { opacity: 1;
             -ms-animation-timing-function: ease-out; }
        17% { opacity: 1 }
        25% { opacity: 0 }
        100% { opacity: 0 }
    }
    
    @keyframes imageAnimation { 
        0% { opacity: 0;
        animation-timing-function: ease-in; }
        8% { opacity: 1;
             animation-timing-function: ease-out; }
        17% { opacity: 1 }
        25% { opacity: 0 }
        100% { opacity: 0 }
    }
    

提交回复
热议问题