—»     —»   Разработка стильного слайдера изображений на чистом CSS3
  Раздел: Руководства   Комментариев: 1  

Разработка стильного слайдера изображений на чистом CSS3



В данном руководстве мы хотим рассказать вам о процессе разработки слайдера изображения на чистом коде CSS3, который был создан под вдохновением от Futurico User Interface – работы Владимира Кудинова. CSS3 параметры, которые мы будем использовать в данном руководстве, на данный момент в большинстве браузеров пока еще на стадии тестирования, поэтому слайдер будет работать не во всех браузерах (постарайтесь проверить в Chrome и Safari). Мы не рекомендуем вам использовать этот слайдер в коммерческих проектах, так как он вряд ли будет работать надлежащим образом. Воспользуйтесь данным руководством ради собственного развития, и ради знакомства с последними CSS-параметрами, которые вы без труда сможете применять в будущем.

Разработка стильного слайдера изображений на чистом CSS3

Сложность: средняя Необходимое время: 45 минут

Этап 1 – HTML

Мы создадим 2 неупорядоченных списка – один для миниатюр, а второй для изображений. Чтобы связать миниатюру с соответствующим изображением, каждому изображению будет задан id.

<div class="slider-wrapper">
<ul class="s-thumbs">
<li><a href="#slide-1"><img src="img/thumb1.png" alt="" /></a></li>
<li><a href="#slide-2"><img src="img/thumb2.png" alt="" /></a></li>
<li><a href="#slide-3"><img src="img/thumb3.png" alt="" /></a></li>
<li><a href="#slide-4"><img src="img/thumb4.png" alt="" /></a></li>
<li><a href="#slide-5"><img src="img/thumb5.png" alt="" /></a></li>
<li><a href="#slide-6"><img src="img/thumb6.png" alt="" /></a></li>
<li><a href="#slide-7"><img src="img/thumb7.png" alt="" /></a></li>
</ul>
<ul class="s-slides">
<li id="slide-1"><img src="img/slide1.png" alt="" /></li>
<li id="slide-2"><img src="img/slide2.png" alt="" /></li>
<li id="slide-3"><img src="img/slide3.png" alt="" /></li>
<li id="slide-4"><img src="img/slide4.png" alt="" /></li>
<li id="slide-5"><img src="img/slide5.png" alt="" /></li>
<li id="slide-6"><img src="img/slide6.png" alt="" /></li>
<li id="slide-7"><img src="img/slide7.png" alt="" /></li>
</ul>
</div>

Этап 2 – Основные стили CSS

В данном этапе мы создадим основную разметку для нашего слайдера. Для этого нам нужно сбросить поля и отступы элементов слайдера, задать им фиксированную ширину/высоту и правильно их расположить.

.slider-wrapper ul,
.slider-wrapper li,
.slider-wrapper div,
.slider-wrapper img,
.slider-wrapper a {
margin: 0;
padding: 0;
border: none;
outline: none;
list-style: none;
}

.slider-wrapper {
width: 508px;
overflow: hidden;
}

ul.s-thumbs li {
float: left;
}

ul.s-slides,
ul.s-slides li,
ul.s-slides a,
ul.s-slides img {
width: 500px;
height: 350px;
position: relative;
}

ul.s-slides {
overflow: hidden;
clear: both;
}

ul.s-slides li {
position: absolute;
z-index: 50;
}

Разработка стильного слайдера изображений на чистом CSS3

Этап 3 – CSS3-стилизация

Теперь мы добавим CSS3-стили для того, чтобы наш слайдер выглядел привлекательнее. Здесь мы используем некоторые CSS3-параметры вроде теней, закругленных углов и так далее. Вы заметите, что мы используем разные префиксы для каждого браузера. Это необходимо потому, что данные параметры находятся на стадии тестирования в некоторых браузерах, и поэтому нам нужно указывать префиксы для обозначения браузеров.

ul.s-thumbs li {
float: left;
margin-bottom: 10px;
margin-right: 11px;
}

ul.s-thumbs li:last-child {
margin-left: 1px;
margin-right: 0;
}

ul.s-thumbs a {
display: block;
position: relative;
width: 55px;
height: 55px;
border: 4px solid transparent;

-webkit-transition: all 0.25s ease-in-out;
-moz-transition: all 0.25s ease-in-out;
-o-transition: all 0.25s ease-in-out;
-ms-transition: all 0.25s ease-in-out;
transition: all 0.25s ease-in-out;

font: bold 12px/25px Arial, sans-serif;
color: #515151;
text-decoration: none;
text-shadow: 1px 1px 0px rgba(255,255,255,.25), inset 1px 1px 0px rgba(0,0,0,.15);
}

ul.s-thumbs img {
-webkit-box-shadow: 1px 1px 5px rgba(0,0,0,.5);
-moz-box-shadow: 1px 1px 5px rgba(0,0,0,.5);
box-shadow: 1px 1px 5px rgba(0,0,0,.5);
}

ul.s-thumbs a:hover,
ul.s-slides {
border: 4px solid #141517;

-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;

-webkit-box-shadow: 0px 1px 0px rgba(255,255,255,.05);
-moz-box-shadow: 0px 1px 0px rgba(255,255,255,.05);
box-shadow: 0px 1px 0px rgba(255,255,255,.05);
}

Разработка стильного слайдера изображений на чистом CSS3

Этап 4 – Описание изображений

В данном этапе мы добавим блок с описанием изображения, который будет появляться при наведении на изображение курсора мыши. Мы создадим его при помощи CSS3-стилей и селектора :before, который позволит нам добавить стрелочку.

HTML

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

<ul class="s-thumbs">
<li><a href="#slide-1"><img src="img/thumb1.png" alt="" /><span>Image 1</span></a></li>
<li><a href="#slide-2"><img src="img/thumb2.png" alt="" /><span>Image 2</span></a></li>
<li><a href="#slide-3"><img src="img/thumb3.png" alt="" /><span>Image 3</span></a></li>
<li><a href="#slide-4"><img src="img/thumb4.png" alt="" /><span>Image 4</span></a></li>
<li><a href="#slide-5"><img src="img/thumb5.png" alt="" /><span>Image 5</span></a></li>
<li><a href="#slide-6"><img src="img/thumb6.png" alt="" /><span>Image 6</span></a></li>
<li><a href="#slide-7"><img src="img/thumb7.png" alt="" /><span>Image 7</span></a></li>
</ul>

CSS

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

ul.s-thumbs li a:hover span {
position: absolute;
z-index: 101;
bottom: -30px;
left: -22px;
display: block;
width: 100px;
height: 25px;
text-align: center;

-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;

-webkit-box-shadow: 0px 1px 0px rgba(0,0,0,.4);
-moz-box-shadow: 0px 1px 0px rgba(0,0,0,.4);
box-shadow: 0px 1px 0px rgba(0,0,0,.4);

-webkit-transition: all 0.25s ease-in-out;
-moz-transition: all 0.25s ease-in-out;
-o-transition: all 0.25s ease-in-out;
-ms-transition: all 0.25s ease-in-out;
transition: all 0.25s ease-in-out;

background: #ffffff; /* Old browsers */
background: -moz-linear-gradient(top, #ffffff 0%, #bcbcbc 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#bcbcbc)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #ffffff 0%,#bcbcbc 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #ffffff 0%,#bcbcbc 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #ffffff 0%,#bcbcbc 100%); /* IE10+ */
background: linear-gradient(top, #ffffff 0%,#bcbcbc 100%); /* W3C */
}

ul.s-thumbs li a:hover span:before {
width: 0;
height: 0;
border-bottom: 5px solid #ffffff;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
content: '';
position: absolute;
top: -5px;
left: 44px;
}

ul.s-thumbs li:first-child a:hover span {
left: -3px;
}

ul.s-thumbs li:first-child a:hover span:before {
left: 25px;
}

ul.s-thumbs li:last-child a:hover span {
left: auto;
right: -3px;
}

ul.s-thumbs li:last-child a:hover span:before {
left: auto;
right: 26px;
}

Разработка стильного слайдера изображений на чистом CSS3

Этап 5 – Переходы слайдера

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

HTML

<ul class="s-slides">
<li id="slide-1" class="slideLeft"><img src="img/slide1.png" alt="" /></li>
<li id="slide-2" class="slideRight"><img src="img/slide2.png" alt="" /></li>
<li id="slide-3" class="slideTop"><img src="img/slide3.png" alt="" /></li>
<li id="slide-4" class="slideBottom"><img src="img/slide4.png" alt="" /></li>
<li id="slide-5" class="zoomIn"><img src="img/slide5.png" alt="" /></li>
<li id="slide-6" class="zoomOut"><img src="img/slide6.png" alt="" /></li>
<li id="slide-7" class="rotate"><img src="img/slide7.png" alt="" /></li>
</ul>

CSS

Для создания переходов мы будем использовать @keyframes – анимацию, создаваемую за счет пошаговых изменений от одного набора параметров CSS к другому. Чтобы определить, откуда начинается анимация, изменяется и завершается, мы воспользуемся процентным соотношением: 0% - это начало анимации, 100% - это ее завершение. Давайте начнем разработку анимации.

Скольжение с левой стороны

В самом начале анимации изображение будет обозначено параметром left равным -500 пикселей, и по окончании анимации оно будет расположено на 0 пикселей по параметру left. Выставив анимации продолжительность в 1 секунду, мы имитируем эффект скольжения слева направо.

/* Slide Left */

@-webkit-keyframes 'slideLeft' {
0% { left: -500px; }
100% { left: 0; }
}

ul.s-slides li.slideLeft:target {
z-index: 100;

-webkit-animation-name: slideLeft;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: 1;
}

Скольжение с правой стороны

/* Slide Right */

@-webkit-keyframes 'slideRight' {
0% { left: 500px; }
100% { left: 0; }
}

ul.s-slides li.slideRight:target {
z-index: 100;

-webkit-animation-name: slideRight;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: 1;
}

Скольжение с верха

/* Slide Top */

@-webkit-keyframes 'slideTop' {
0% { top: -350px; }
100% { top: 0; }
}

ul.s-slides li.slideTop:target {
z-index: 100;

-webkit-animation-name: slideTop;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: 1;
}

Скольжение с низа

/* Slide Bottom */

@-webkit-keyframes 'slideBottom' {
0% { top: 350px; }
100% { top: 0; }
}

ul.s-slides li.slideBottom:target {
z-index: 100;

-webkit-animation-name: slideBottom;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: 1;
}

Увеличение изображения изнутри

Чтобы сделать переход с увеличением, мы используем CSS3-параметр transform. В самом начале анимации размер изображения будет составлять 10%, а в конце анимации оно будет доведено до исходного размера. Мы сместим его от верхней границы на 4 пикселя, чтобы подправить пространство, которое появляется снизу.

/* Zoom In */

@-webkit-keyframes 'zoomIn' {
0% { -webkit-transform: scale(0.1); }
100% { -webkit-transform: none; }
}

ul.s-slides li.zoomIn:target {
z-index: 100;
top: 4px;

-webkit-animation-name: zoomIn;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: 1;
}

Увеличение изображения снаружи

/* Zoom Out */

@-webkit-keyframes 'zoomOut' {
0% { -webkit-transform: scale(2); }
100% { -webkit-transform: none; }
}

ul.s-slides li.zoomOut:target {
z-index: 100;

-webkit-animation-name: zoomOut;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: 1;
}

Вращение и увеличение изображения

/* Rotate */

@-webkit-keyframes 'rotate' {
0% { -webkit-transform: rotate(-360deg) scale(0.1); }
100% { -webkit-transform: none; }
}

ul.s-slides li.rotate:target {
z-index: 100;
top: 4px;

-webkit-animation-name: rotate;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: 1;
}

Этап 6 – «Не определяем» изображение

Так как мы используем параметр z-index для того, чтобы определить, какое изображение будет отображено сверху, у нас выскакивает баг при нажатии на ссылку отображения нового изображения. Когда вы кликаете по новой миниатюре, предыдущий активный слайд исчезает и показывает нам последний слайд в момент скольжения нового слайда. Для того чтобы исправить это, нам нужно добавить стиль not-target с более высоким значением z-index в момент скольжения нового слайда.

/* Not Target */

@-webkit-keyframes 'notTarget' {
0% { z-index: 75; }
100% { z-index: 75; }
}

ul.s-slides li:not(:target) {
-webkit-animation-name: notTarget;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: 1;
}

Этап 7 – Первый видимый слайд

Когда слайдер загружен, он покажет нам изображение с последнего слайда. Для того чтобы иметь возможность выбирать первый видимый слайд, мы создадим класс с более высоким z-index, и вам нужно будет всего лишь добавить этот класс к слайду, который должен отображаться первым.

/* First Slide */

ul.s-slides li.first {
z-index: 60;
}

Этап 8 – Загрузка слайдера

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

/* Slider Load */

@-webkit-keyframes 'load' {
0% { opacity: 0; }
50% { opacity: 0; }
100% { opacity: 1; }
}

.slider-wrapper {
-webkit-animation-name: load;
-webkit-animation-duration: 2s;
-webkit-transition-timing-function: ease-in-out;
-webkit-animation-iteration-count: 1;
}

В завершение

Поздравляем, вы дошли до конца руководства! Так как здесь мы использовали довольно много CSS3-параметров, они поддерживаются только самыми свежими версиями браузеров. Поэтому данный слайдер вряд ли сейчас подойдет для серьезного коммерческого проекта. Данное руководство направлено больше на то, чтобы познакомить вас с некоторыми аспектами CSS3, который могут понадобиться вам в будущем.

* Смотреть демо
Внимание! У вас нет прав для просмотра скрытого текста.
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: CSS, слайд-шоу
Опубликовал Design FactoRy   Прочитано (раз): 13549   |   Оставлено комментариев: 1
Источник материала / оригинал статьи   Распечатать
Другие статьи и новости по теме:
Комментарий #1: 7 ноября 2014 @ 20:15
Написал: Аслан — группа: Гости  
На сайте с: --   |   Публикаций: 0   |   Комментариев: 0
ICQ: --- не указано ---
Автор, твоей писанины средний пользователь не разберет всё равно. В таких случаях исходники загружают, если ты не в курсе.
Администрация а вам совет уберите капчу, или тупые вопросы при написании сообщения. А то можно подумать, что вы помешаны на безопасности среднего ресурса.
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Назовите месяц October по-русски
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


Типография москва дешево
Типография в Митино. Визитки, листовки, буклеты, широкоформатная печать
print-house.su
Деревянные окна
Статьи об окнах. Деревянные окна. Изготовление деревянных окон
derewookna.ru
Юрист 1 класса
Услуги юристов на заказ. Коллектив специалистов
pristavy-info.ru
Популярные публикации


















Свежие шаблоны сайтов каждый день
С миру по нитке
«    Июль 2017    »
ПнВтСрЧтПтСбВс
 12
3456789
10111213141516
17181920212223
24252627282930
31