слайдшоу,CSS3

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

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

Идея слайдшоу на CSS

Нам нужен только внешний контейнер с относительным позиционированием и скрытием того, что выступает за границы. Также понадобится внутренний контейнер, в котором будет происходить анимация.
<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.
<strong></strong>.

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%);
    }
}

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

Очевидный метод ускорения - уменьшение времени анимации:
.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;
 
    ...
}

Теги:
slideshow, webkit, images, animation, linear, infinite, moveSlideshow, class, translateX, transform, opacity, будет, transition, слайдшоу, использовать, keyframes, ускорения, будем, position, слайд, сделать, Изображения, наведении, размещаются, здесь , Улучшаем, следующим, background, производительность, контейнер, strong, WebKit, курсора, метод, трансформации
Добавлено: 28 Апреля 2018 15:48:13 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...