css3 image crossfade (no javascript)

前端 未结 2 1496
一生所求
一生所求 2020-12-19 17:41

I\'m pretty sure it\'s possible to do a css only image crossfade using the new css animation features. My requirements are that it should work for arbitrary number of images

相关标签:
2条回答
  • 2020-12-19 18:13

    Use keyframes, outlined in this article: http://css3.bradshawenterprises.com/cfimg/#cfimg3

    0 讨论(0)
  • 2020-12-19 18:22

    This article is the best I've seen for doing an effect like this.

    http://tympanus.net/codrops/2012/01/02/fullscreen-background-image-slideshow-with-css3/

    They use spans, animation and the :nth-child property to achieve a crossfade between the background images. Pretty awesome.

    .cb-slideshow li span {
        width: 100%;
        height: 100%;
        position: absolute;
        top: 0px;
        left: 0px;
        color: transparent;
        background-size: cover;
        background-position: 50% 50%;
        background-repeat: none;
        opacity: 0;
        z-index: 0;
        animation: imageAnimation 36s linear infinite 0s;
    }
    
    
        .cb-slideshow li:nth-child(1) span {
        background-image: url(../images/1.jpg)
    }
    .cb-slideshow li:nth-child(2) span {
        background-image: url(../images/2.jpg);
        animation-delay: 6s;
    }
    .cb-slideshow li:nth-child(3) span {
        background-image: url(../images/3.jpg);
        animation-delay: 12s;
    }
    .cb-slideshow li:nth-child(4) span {
        background-image: url(../images/4.jpg);
        animation-delay: 18s;
    }
    .cb-slideshow li:nth-child(5) span {
        background-image: url(../images/5.jpg);
        animation-delay: 24s;
    }
    .cb-slideshow li:nth-child(6) span {
        background-image: url(../images/6.jpg);
        animation-delay: 30s;
    }
    
    .cb-slideshow li:nth-child(2) div {
        animation-delay: 6s;
    }
    .cb-slideshow li:nth-child(3) div {
        animation-delay: 12s;
    }
    .cb-slideshow li:nth-child(4) div {
        animation-delay: 18s;
    }
    .cb-slideshow li:nth-child(5) div {
        animation-delay: 24s;
    }
    .cb-slideshow li:nth-child(6) div {
        animation-delay: 30s;
    }
    
    0 讨论(0)
提交回复
热议问题