Как сделать слайдер

Обновлено: 05.07.2024

В этом уроке для веб разработчиков мы продемонстрируем создание слайдера на HTML, CSS, и JavaScript (jQuery) и добьёмся, чтобы он работал во всех браузерах (с активированным и дезактивированным JavaScript).

Начало работы

Одним из самых важных аспектов работы над новым проектом, является создание HTML структуры. Мы должны добиться того, чтобы данный слайдер одинаково отображался во всех браузерах и работал даже на тех, где отключен JavaScript.

Блок 1: HTML

Вы можете заметить, что в приведённом фрагменте кода нет ничего связанного с элементами контроля нашего слайдера. Мы их добавим в DOM позже, посредством JavaScript скрипта. Если их добавить сейчас, то они будут смущать тех, кто отключает поддержку CSS или JavaScript.

Вариант 1: Полноценный слайдер

Заметка: Проверяйте работу после каждого изменения. Если вы занимаетесь разработкой чего-то нового, то всегда тестируйте работу проведённых изменений, будь то даже изменение HTML структуры. Вы можете использовать специальный инструмент WebAnywhere для тестирования содержания.

Стилизуем слайдер

Следующим действием мы оформим наш дизайн и предусмотрим несколько вещей для тех пользователей, которые отключают JavaScript.

Нам необходимо немного уменьшить ширину блока с классом .slide на 20px для того, чтобы появилось место для области прокрутки слайдов для тех, у кого отключен JavaScript.

Блок 3: CSS класс .slide

С отключённым JavaScript, наш контент всё равно доступен для пользователей; благодаря прокрутке они могут просматривать слайды.

Вариант 2: Слайдер без JavaScript

В качестве альтернативы, вы можете добавить классу .slide дополнительное свойство float:left; для того чтобы пользователи без JavaScript могли прокручивать слайды горизонтально.

Стрелки вправо и влево

Для того чтобы добиться большей производительности, мы добавим элементы контроля над слайдером посредством изменения DOM при помощи jQuery.

Элементы будут представлять из себя span элемент, поэтому мы назначили свойству cursor значение pointer для создания эффекта наведения мыши на кнопку. Так же мы используем свойство text-indent для того, чтобы спрятать текст.

Блок 4: Элементы контроля

Самое интересное… JavaScript

После того, как мы подготовили наш HTML и CSS, самое время заняться основным скриптом. Для создания анимации и прочих фишек мы будем использовать библиотеку jQuery.

Теория

В конце концов, мы вставим элементы контроля (с классом .control) для того, чтобы пользователи могли переключать слайды; это мы сделаем средствами JavaScript, чтобы тем, у кого он отключён, элементы контроля не отобразились.

Вашему вниманию я представляю код JavaScript детальное описание которого последует ниже.

Блок 5: Главный скрипт jQuery

Создаём объекты

В первую очередь, мы инициализируем некоторые переменные в самом начале скрипта.

currentPosition будет содержать текущую позицию. slideshow.slideWidth - это ширина каждого блока .slide, которая равна 560px. Я предпочёл объявить объект для селектора $('.slide'), для того чтобы код смотрелся немного чище, но вы можете поступить по-другому и в дальнейшем использовать запись ($('.slide')).

И наконец, мы определяем количество слайдов в нашем слайдере, используя метод .length.

Блок 6: Переменные и константы

Убираем прокрутку

Когда скрипт запустится для тех, у кого включён JavaScript, мы уберём элемент прокрутки, установив значение hidden элементу slidesContainer, и это будет заменять переполнение overflow:auto CSS (смотри Блок 3).

Блок 7: Изменения значения свойства CSS overflow на hidden

Вставка div в DOM

Мы будем использовать свойство margin для перемещения слайдов влево и вправо (но чуть позже). Для этого нам необходимо создать специальный блок, в который будут вписаны все блоки с классом .slide, совпадающие с ним по ширине и высоте. Изменяя значение внешних отступов для этого элемента, мы создадим эффект перемещения в разные стороны.

Утилизируем слайды при помощи JavaScript

Если JavaScript включён, мы хотим расположить слайды друг за другом. Также каждому из низ мы зададим фиксированную ширину в 560px – таков и будет размер нашего слайдера.

Мы можем совместить метод .css с методом .wrapAll(), который мы использовали в Блоке 8.

Блок 10: Присвоение .slide блокам overflow:hidden

Вставка стрелок в DOM

Мы вставим необходимые элементы, посредством манипулирования элементами DOM; таким образом, обеспечим пользователям, которые отключают JavaScript и другим устройствам простую картинку без всякого функционала. Так у них не появится никаких лишних вопросов.

Блок 11: Вставка элементов контроля в DOM

Управления стрелками посредством функций

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

Если мы смотрим первый слайд, то нам необходимо, по понятным причинам, спрятать левую стрелку. Когда мы будем на правом слайде, то нам нет никакого резона отображать правую стрелку нашего слайдера. Показ и скрытие данных элементов мы осуществим при помощи jQuery методов .hide() и .show(), которые предназначены специально для подобных целей.

Блок 12: функция manageControls()

Вызываем manageControls(), когда DOM готов

Когда наш скрипт окончательно загрузится, мы должны вызывать метод manageControls(), для того чтобы спрятать левую стрелку контроля. Это просто, мы передаём аргумент currentPosition, который должен быть равен 0.

Блок 13: вызов manageControls() при полной загрузке документа

Отлавливаем события

Всё что нам осталось сделать для нашего jQuery слайдера, так это создать функционал для отлавливания кликов по элементам контроля. Этот функционал будет активироваться в том случае, если пользователь нажмёт на одну из стрелок: правую или левую.

Блок 14: Отлавливаем клик на класс .control

Обновляем значение для currentPosition

Блок 15: Новое значение для currentPosition

Вызов manageControls() после обновления значения currentPosition

После того, как мы определи значение переменной currentPosition, снова вызываем manageControls(), для того чтобы скрыть и отобразить инструменты контроля над слайдами.

Блок 16: Вызов manageControls() внутри метода .bind

Анимируем слайды

Блок 17: Используем метод .animate при смене CSS свойства margin-left

Заключение

В этом уроке, мы создали простой слайдер при помощи HTML, CSS, и JavaScript (jQuery). Также мы использовали специальные техники, которые позволят слайдеру работать с отключёнными CSS и JavaScript. Спасибо за внимание.

5 последних уроков рубрики "jQuery"

Анимация набора текста на jQuery

Сегодня мы бы хотели вам рассказать о библиотеке TypeIt — бесплатном jQuery плагине. С её помощью можно имитировать набор текста. Если всё настроить правильно, то можно добиться очень реалистичного эффекта.

Временная шкала на jQuery

jQuery плагин для создания временной шкалы.

Заметка: Перезагрузка и редирект на JavaScript

Быстрая заметка, где вы сможете найти парочку JS сниппетов для перезагрузки и перенаправления пользователей через JavaScript.

В комментариях к посту Примеры сайтов со слайдерами недавно спрашивали существуют ли какие-то онлайн сервисы для их создания. В принципе, если ваш проект работает на одной из популярных CMS (WordPress, Drupal), то там должны быть соответствующие плагины. Но что делать, когда сайт написан на HTML или подходящих модулей нет? Сегодня расскажу о некоторых вариантах решения этой задачи.

Вообще методы создания слайдеров разные. Помнится, когда раньше работал с TYPO3, там был модуль, автоматически преобразовывающий картинки во флеш для отображения на сайте. Также есть специальные десктопные программы, позволяющие делать похожие флешки или же генерирующие нужный HTML+CSS код. Сейчас же слайдеры в основном реализуются с помощью Javascript и соответствующих библиотек, например, jQuery. Причем существует достаточно много разных скриптов. Парочку из них рассмотрю.

Image Slider Maker

Image Slider Maker

Image Slider Maker — отличный сервис для создания слайдера онлайн. Вам не нужно вникать ни в какие скрипты, практически все настройки доступны для интерактивного редактирования: размеры, эффекты, навигация и т.п. Вы просто загружаете свои картинки, выбираете нужные опции и скачиваете готовый код слайдера. Все это бесплатно. В финальном HTML есть ссылка на данный сервис, но теоретически ее можно убрать, никаких дополнительный водяных знаков на картинках нет. Разработчикам респект!

ComSider

ComSider - генератор слайдеров

ComSider — еще один бесплатный онлайн генератор слайдеров для сайта. Принцип работы похожий, состоит из 3-х шагов: загрузка картинки, выбор шаблона слайдера и его настройка, интеграция кода со своим сайтом. Шаблоны слайдеров позволяют создавать разные по дизайну элементы. При этом в сервисе реально много настроек эффектов и других опций для получения желаемого результата. На сайте сказано, что вы можете встроить код без скачивания файлов или же загрузить их и интегрировать слайдер самостоятельно.

Cincopa

Слайдер Cincopa

Cincopa — весьма симпатичный сервис создания HTML слайдера, но, к сожалению, не полностью бесплатный. Это один из многих подобных проектов, где имеются специальные тарифные планы. Для free версии, как правило, добавляются разные ограничения по количеству загружаемых изображений, трафику, и (самое плохое) размещается водяной знак. При этом все, конечно, мастерски реализовано — уйма тем оформления, настройки, плагины для популярных CMS, тех.поддержка. Тут нужно смотреть на тарифы, в некоторых сервисах они могут быть вполне доступными.

Jquery Slider Shock

Jquery Slider Shock

Сервис Jquery Slider Shock — один из немногих, где в бесплатном тарифе нет водяных знаков на изображениях. Ограничивается только число возможных эффектов, но это не критично. Много настроек, имеется специальный плагин для WordPress. В целом неплохое решение.

HTML5Maker

HTML5Maker - сервис создания слайдеров

HTML5Maker — еще один пример платного сервиса, который работает по подписке. В Free версии вам придется мириться с водяным знаком, однако начинающий тариф Starter позволяет от него избавиться. При этом он имеет относительно доступную цену ($5/месяц) и позволяет создавать до 3-х слайдеров со всеми эффектами и множеством шаблонов.

Slippry

Скрипт слайдера Slippry

Следующий вид сайтов со слайдерами — это проекты, содержащие готовые для работы скрипты, например Slippry. Здесь нет никаких удобных форм с загрузкой фоток и указанием настроек, зато все бесплатно. Вы загружаете код HTML слайдера на свой хостинг и вручную интегрируете его с сайтом. На страницах разработчиков, как правило, есть документация по использованию скрипта, пояснения по коду и примеры работы.

Glide

Glide - скрипт слайдера для фона

Вообще слайдеры бывают разные — Glide отличный тому пример. Скрипт позволяет создать красивый слайдер для фона сайта. Простой, быстрый, адаптивный.

TosRus

TosRus - оригинальный слайдер и галерея

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

jQuery Image Scale Carousel

jQuery Image Scale Carousel

Immersive Slider by Pete R.

Immersive Slider by Pete R.

Визуально слайдер для сайта Immersive Slider by Pete R. смотрится очень стильно. Есть элементы навигации, текстовый блок. Общим фоном для элемента становится размытая картинка из самого слайдера, что создает весьма интересный эффект.

SKDSlider

SKDSlider

DesoSlide

DesoSlide

Данное решение DesoSlide больше похоже на галерею, но мне лично приглянулось. Простота использования, легкость настройки и бесплатность — основные плюсы DesoSlide. Разработчикам сайтов может пригодиться.

BeaverSlider

BeaverSlider

Проект BeaverSlider разработчики позиционируют как бесплатную галерею на jQuery, хотя визуально она напоминает обычный слайдер. Решение совместимо со всеми основными браузерами, имеет много разных эффектов для смены изображений. Понравился раздел демо, где вы можете в реальном времени применять те или иные настройки дабы посмотреть как работает слайдер для сайта.

FerroSlider 2

FerroSlider 2

FerroSlider 2 — простой, функциональный, настраиваемый jQuery скрипт слайдера на HTML5 и CSS3. Решение совместимо со всеми браузерами и поддерживает адапативный дизайн. Разработчикам понравится.

jsSimpleSlider

jsSimpleSlider

Решение jsSimpleSlider пригодится, если вам нужно создать слайдер по типу карусели, когда выводится несколько картинок и они автоматически прокручиваются влево/вправо (например, для строки логотипов партнеров или отображения работ). Недавно я рассматривал как реализовать эту задачу в WordPress, для обычных сайтов можно попробовать скрипт jsSimpleSlider.

Online Flash Slideshow Creator

Online Flash Slideshow Creator

Сервис Online Flash Slideshow Creator из загруженных вами картинок создает флешку, которая и отображается на сайте в виде слайдера. Работать с этим инструментом просто, хотя на классический слайдер это мало похоже (как минимум, не хватает элементов управления). Все, что вы можете задать в нем, — это внешние ссылки и эффекты перехода. Использовать данный сервис вы, думаю, вряд ли будете, просто привожу его как один из вариантов реализации поставленной задачи.

WOWSlider

Программа WOWSlider для создания слайдера

CU3OX

Программа CU3OX для галереи

Программа CU3OX приглянулась необычным 3D эффектов для смены изображений. Она используется для создания Flash галерей и слайдеров. Работает на Win и Mac. Здесь есть много разных настроек, вариантов смены картинок, локализации на разные языки и т.п. Для персонального использования можно выбрать бесплатную версию, хотя она, увы, содержит водяной знак.

Если этих сервисов, программ и скриптов слайдеров вам мало, то советую почитать данную статью — там находится около 100 разных вариантов их реализации. Все, в принципе, зависит от требований к функциональности и ваших знаний. Специальные сервисы создания слайдеров, указанные в самом начале, работают вполне неплохо и являются бесплатными. Если вы хорошо знакомы с веб-разработкой, то сможете разобраться в приведенных в статье jQuery скриптах. Тем, кому разработка чужда, подойдут платные решения. Часть из них доступна онлайн по подписке, другая является десктопными программами. Последние стоят дороже, но там нет лимитов на количество создаваемых элементов или временных ограничений.

Кстати, если знаете какие-то интересные сервисы/скрипты создания слайдеров для сайтов, пишите названия и ссылки на них в комментариях.

Codepen.io - это сборник различных pen-ов (ручек, если перевести дословно), а точнее примеров кода из различных областей - от HTML/CSS до JavaScript/jQuery и React/Angular. Там вполне реально найти идеи для своего сайта или рецепты для решения какой-либо задачи, связанной с сайтостроением. Сегодня мы посмотрим на примеры слайдеров.

Отзывчивый слайдер-параллакс с прозрачными буквами и перетаскиваемыми слайдами

Слайдер с анимацией

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

See the Pen Slider transitions by Mirko Zorić (@fluxus) on CodePen.light

Выскакивающий слайдер

В этом слайдере изображение отображается на фоне самого себя, только в размытом варианте. Нажмите на next для перехода к следующему слайду.
Автор Nathan Taylor

See the Pen Popout Slider by Nathan Taylor (@nathantaylor) on CodePen.dark

Несколько слайдеров от одного автора.

Слайдер со скосом

Прокрутите колесико мышки для достижения эффекта слайдера.

See the Pen Skewed One Page Scroll by Nikolay Talanov (@suez) on CodePen.dark

Слайдер со скосом-2

От того же автора Nikolay Talanov слайдер со скосом и текстом на фоне картинки. Управление - с помощью точек-переключателей внизу слайдера. Лучше смотрится на большом экране или с изменением масштаба до 0.5, иначе вы увидите прямоугольники вместо скошенных треугольников.

Интересный макет с анимацией и меню

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

Слайдер с видами городов

Слайдер с видами городов и нарезкой фото. Управление стрелками.

See the Pen Cities Slider (React) by Nikolay Talanov (@suez) on CodePen.dark

Слайдер для одежды

Хоть автор и назвал свой слайдер Fashion concept, но его подход можно использовать для любых изображений.

Волнообразный слайдер

Просто прокрутите колесо мыши.

See the Pen Wavescroll (drag background) by Nikolay Talanov (@suez) on CodePen.dark

Слайдер для кинофильмов с возможностью просмотра трейлеров с Youtube

Фотогалерея-слайдер со сменой картинок с искажением

See the Pen Distorted Gallery by Nikolay Talanov (@suez) on CodePen.dark

Fancy Slider

Еще один симпатичный слайдер от Nikolay Talanov с красивой анимацией, заголовками и навигацией в правом нижнем углу.

See the Pen Fancy Slider by Nikolay Talanov (@suez) on CodePen.dark

Clip-Path Revealing Slider

Продолжаем галерею слайдеров от Nikolay Talanov с использованием свойства clip-path . Управление стрелками.

See the Pen Clip-Path Revealing Slider by Nikolay Talanov (@suez) on CodePen.dark

Вращающийся 3D слайдер

See the Pen Rotating 3D Slider by Nikolay Talanov (@suez) on CodePen.dark

Вращающийся куб со сменой картинок

See the Pen Animated cube slider by Alberto Hrtzt (@hrtzt) on CodePen.0

Несколько 3D-каруселей для изображений

See the Pen 3D Carousel Gallery II by Nikolay Talanov (@suez) on CodePen.dark

Еще один вариант 3D-карусели с помощью GSAP от Tom Miller.

See the Pen 3D Carousel by Yoav Kadosh (@ykadosh) on CodePen.0

Cлайдер-аккордеон

Изображения отображаются при наведении на прямоугольняй блок. Задействована GSAP анимация.

Слайдер-карусель со сменой фоновых изображений

Еще один слайдер-карусель на основе GSAP-анимации.

Слайдер на весь экран

React-слайдер

See the Pen React Slider by Nikolay Talanov (@hexagoncircle) on CodePen.dark

Слайдер для показа домов

See the Pen Animated Slider by Kasper De Bruyne (@kdbkapsere)
on CodePen.0

Слайдер с делением на 2 части на основе Slick-slider

Для создания такого слайдера вам придется подключить jQuery и slick-slider. Смотрите в настройки проекта на codepen.io: вкладки CSS и JS.

Настройки кода на codepen.io

See the Pen Split Slick Slideshow by Fabio Ottaviani (@supah) on CodePen.dark

Интересный слайдер для продуктов в бутылках

Интересная идея на основе Swiper-слайдер.

eCommerce слайдер

Еще один продуктовый слайдер от автора Sebi. На этот раз с кроссовками и даже с возможностью посмотреть детали в виде размера, с наличием кнопки добавления в корзину.

Слайдер для книг

На первый взгляд кажется, что автор этого слайдера Aysenur Turk обошлась без использования JS, только HTML и SCSS. Однако, если заглянуть в настройки JS на Codepen, то мы увидим ссылку на плагин Flickity.

Слайдер с информацией

Автор этого слайдера Nathan Taylor назвал его Info Cards. В JS-коде нужно указывать, какие именно классы будут анимированы.

See the Pen Info Cards by Nathan Taylor (@nathantaylor) on CodePen.0

Липкий слайдер

Автор Lewi Hussey использовал в своем слайдере код на jQuery с эффектом уменьшения блока при смене слайдера.

See the Pen Gummy slider by Lewi Hussey (@Lewitje) on CodePen.0

CSS-слайдер для изображений с подписями

Слайдер основан на css-свойствах animation и @keyframes.

CSS-слайдер с управлением стрелками и точками

Вместо точек - линии внизу, как в Bootstrap-карусели.

CSS-слайдер с подписями на треугольном фоне

Еще один CSS-слайдер. Под слайдером вы найдете инструкцию по встраиванию слайдера на вашу html-страницу.

See the Pen Pure CSS3 slider by Aladin Bensassi (@Eliteware) on CodePen.dark

CSS-слайдер в виде картины

Слайдер для навигационного меню

Очень интересное решение для меню на Landing Page. Прокручивая контент, вы видите, как перемещается полоса к активному пункту меню.

Отзывчивый слайдер с автоматической прокруткой и описанием

Для слайдера использованы только HTML5 и CSS3 с анимацией типа @keyframes .

Круговой вращающийся слайдер (Circular Slider)

Бесконечный перетаскиваемый слайдер

Эффект разрыва фото для смены изображений в фотогалерее

Этот пример сложно назвать слайдером, хотя эффект смены фотографий, безусловно, заслуживает внимания. В отличие от настоящих, эти фото не разрываются навсегда. Фотогалерею можно пересматривать заново, даже не нажимая на кнопку Rerun.

Проведите мышкой сверху вниз для получения эффекта.

See the Pen Photo Tear by Steve Gardner (@ste-vg)
on CodePen.0

Эффект смены изображений для вкладок

Автор Zed Dash предлагает вам эффект смены изображений на основе увеличения одной из картинок.

Смена разделов страницы сайта при скроллинге

Очень симпатичный вариант скроллинга разделов страницы от Ryan Mulligan.

И еще один вариант скроллинга разделов от того же автора.

Идея для оформления шапки сайта

Не совсем слайдер, т.к. нет пролистывания изображений. Зато есть эффекты при наведении и клике на любом из изображений.

Автор Ruslan Pivovarov, работа которого открывала эту подборку слайдеров.

Автоматическое перемещение изображений с помощью css-анимации

Строго говоря, это не слайдер. Однако, возможно, вам пригодится эффект перемещения изображений с помощью css от Ryan Mulligan.

Слайдер с меняющимися фото на CSS

Йеллоустоун — национальный парк и заповедник на северо-западе США. Он расположен на территории сразу трех штатов: Вайоминг (самая большая часть), Айдахо и Монтана.


Мальдивские Острова

Мальдивские острова – это огромный архипелаг островов вулканического происхождения и окружающих их коралловых рифов и лагун в Лаккадивском море.


Горы Шотландии

Шотландия — самая горная страна из составляющих Великобританию. Наиболее высокие горы находятся в западной части Грампианских горах.


Озеро Ирен
Заголовок
Заголовок
Заголовок
Заголовок
Немного о коде

На показ каждого слайдера выделяется 10 секунд, а всего их 4. Поэтому общая продолжительность анимации составляет 40 секунд. Это указывается в строках animation: slideanim 40s infinite и animation: zoom 40s infinite

Для каждого слайда отдельно устанавливается задержка, это классы .slideshow-item:nth-child(1) , .slideshow-item:nth-child(1) img и т.д.

Читайте также: