Перекрестное затухание изображения css3 (без JavaScript) - PullRequest
4 голосов
/ 17 декабря 2011

Я почти уверен, что с помощью новых функций анимации CSS можно сделать кроссфейд с использованием только CSS.Мои требования состоят в том, чтобы он работал для произвольного числа изображений без 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.

Ответы [ 2 ]

8 голосов
/ 17 января 2012

Эта статья - лучшее, что я когда-либо видел для создания такого эффекта.

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

Они используют интервалы, анимацию и свойство: nth-child для достижения затухания между фоновыми изображениями. Довольно круто.

.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;
}
5 голосов
/ 17 декабря 2011

Используйте ключевые кадры, изложенные в этой статье: http://css3.bradshawenterprises.com/cfimg/#cfimg3

...