Бесконечное слайдшоу на CSS3

С помощью CSS3 можно творить удивительные вещи. Например, бесконечное слайдшоу.

Как сделать?

Берем длинное изображение, начальная и конечная части которого идентичны. Затем анимируем изменение положения картинки слева, пока оно не завершит полный цикл (то есть, передвинется достаточно далеко вправо), а затем быстро возвращаем все в исходную позицию и начинаем сначала.

Нам нужен только внешний контейнер с относительным позиционированием и скрытием того, что выступает за границы. Также понадобится внутренний контейнер, в котором будет происходить анимация.

<div class="slideshow">
   <div class="images">
       Изображения слайд шоу размещаются здесь
   </div>
</div>

А код CSS будет выглядеть следующим образом:

.slideshow {
  position: relative;
  overflow: hidden;
}
.images {
  background: url(slideshow.jpg);
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 300%;
  -webkit-animation: slideshow 10s linear infinite;
  -moz-animation:    slideshow 10s linear infinite;
}
@-webkit-keyframes slideshow {
  0%    { left: 0; }
  100%  { left: -200%; }
}
@moz-keyframes slideshow {
  0%    { left: 0; }
  100%  { left: -200%; }
}

 

Улучшаем производительность кода

Приведенный выше код должен работать нормально, но мы можем улучшить производительность (по крайней мере, в браузерах семейства WebKit / Mobile WebKit) указав браузеру, что мы собираемся использовать 3D трансформации (даже если мы их и не будем применять) и задействуем translateX вместо left.

.images {
   ...

   /* Указываем браузеру на то, что нужно использовать GPU */
   -webkit-transform: translate3d(0, 0, 0);
}

@-webkit-keyframes moveSlideshow {
    0%   {
        -webkit-transform: translateX(0);
    }
    100% {
        -webkit-transform: translateX(-200%);
    }
}
@-moz-keyframes moveSlideshow {
    0%   {
        -moz-transform:    translateX(0);
    }
    100% {
        -moz-transform:    translateX(-200%);
    }
}

 

Улучшаем интерфейс

Добавим к нашему слайдшоу два эффекта. При наведении курсора мыши на изображение будет:

  1. Увеличиваться скорость проигрывания слайдов.
  2. Изображение будет становиться цветным.

Очевидный метод ускорения - уменьшение времени анимации:

.slideshow:hover .images {
   -webkit-animation-duration: 5s;
   -moz-animation-duration:    5s;
}

Но такой метод приведет к появлению рывков! Изменяя время анимации мы устанавливаем новую временную шкалу для процесса изменения свойств. Браузер воспринимает новые значения и перескакивает на них немедленно. Получается не плавное ускорение, а рывок.

Будем использовать концепцию "ускорения". Если установить два слайдшоу, одно поверх другого, и каждое движется со своей скоростью, а затем скрывать/ показывать самое быстрое при наведении курсора мыши, то получится отличный эффект ускорения. Мы будем использовать трансформации, чтобы сделать переход плавным.

<div class="slideshow">
   <div class="images-1">
       Изображения слайд шоу размещаются здесь
   </div>
   <div class="images-2">
   </div>
</div>

А CSS код будет следующим:

.slideshow > div {
   ...

    -moz-transition:  opacity 0.5s ease-out;
       -o-transition: opacity 0.5s ease-out;
  -webkit-transition: opacity 0.5s ease-out;
      -ms-transition: opacity 0.5s ease-out; 

    /* Медленная часть*/
    -webkit-animation: moveSlideshow 60s linear infinite;
    -moz-animation:    moveSlideshow 60s linear infinite;

    ...
}

.images-1 {
    /* Быстрая часть*/
    -webkit-animation: moveSlideshow 20s linear infinite;
    -moz-animation:    moveSlideshow 20s linear infinite;
}

.slideshow:hover .images-2 {
    opacity: 0;
}

Черно-белый медленный вариант будет размещаться сверху, а цветной быстрый - снизу. Для сокращения числа запросов HTTP поместим оба варианта в один файл и будем только сдвигать позицию фона.

.images-1 {
    /* Спрайт */
    background-position: 0 200px;

    ...
}


Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/jvZK9PGX9yc/lessons.php

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

Комментарии   

 
0 # Игорь 13.02.2014 18:37
:oops: не работает в Internet Explorer
Ответить | Ответить с цитатой | Цитировать
 
 
0 # РэдЛайн 13.02.2014 19:06
:lol: в шестом уж точно
Ответить | Ответить с цитатой | Цитировать
 
 
0 # РэдЛайн 13.02.2014 19:14
И кстати ccs3 это не для всех браузеров 8)
Ответить | Ответить с цитатой | Цитировать
 
Бесконечное слайдшоу на CSS3 | | 2012-06-19 12:04:03 | | Статьи Web-мастеру | | С помощью CSS3 можно творить удивительные вещи. Например, бесконечное слайдшоу.Как сделать?Берем длинное изображение, начальная и конечная части которого идентичны. Затем анимируем изменение | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: