2011-12-16 81 views
4

我敢肯定它可以使用新的css動畫功能做一個僅CSS圖像交叉淡入淡出。我的要求是,它應該適用於沒有JavaScript的任意數量的圖像。css3圖像交叉淡入淡出(無javascript)

有誰知道它是如何完成的?

如何我要從頭開始:

img(src='img1.png') 
img(src='img2.png') 
img(src='img3.png') 
img(src='img4.png') 

接下來所有的圖像被設定與第一個顯示在彼此的頂部堆疊:

img 
    opacity 0 
    transition 1s 
    position absolute 

    &:first-child 
    opacity 100 

現在我該怎樣辦理每個圖像?

編輯:似乎不可能。需要JavaScript。

+0

快速演示:淡入淡出懸停http://jsfiddle.net/e1z034uy/ – 2015-02-19 14:43:18

回答

5

使用關鍵幀,這篇文章中概述:http://css3.bradshawenterprises.com/cfimg/#cfimg3

+0

是圖像的任意數量不可能的?好像你需要設置數字。此外,該示例在動畫完成後不會循環到第一個。 – Harry 2011-12-16 22:40:21

+0

@哈利:它循環着我 - 我猜是因爲`animation-iteration-count:infinite;` – 2011-12-16 22:46:16

8

這篇文章是我見過的做這樣的效果是最好的。

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

他們使用的跨度,動畫和:第n個孩子屬性來實現背景圖像之間的交叉淡入淡出。太棒了。

.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; 
}