- Как сделать слайдер на JS?
- Как сделать простой слайдер на HTML и JavaScript
- Пример простого слайдера на чистом JavaScript
- Что здесь происходит
- Популярные библиотеки для слайдеров
- Slick
- Swiper
- Owl Carousel
- Glide.js
- Материалы по теме
- Обучение веб-разработке на практике: пишем слайдер на JavaScript
- Что понадобится?
- Пишем код
- HTML
- CSS
- JavaScript
- Готовый слайдер изображений
Как сделать слайдер на JS?
В этой статье ты узнаешь как сделать сенсорный слайдер на HTML, CSS и JavaScript. Помогать в этом нам будет библиотека Swiperjs. Я не считаю себя мастером в JS, всегда есть чему учиться, поэтому если вы знаете как написать какие-то фрагменты кода проще, эффективнее и лучше, то обязательно напишите в комменты.
Первым делом создаем файл index.html и открываем его на редактирование. С начало создаем основную структуру страницы:
Далее нужно подключить SwiperJS, для этого переходим в документацию библиотеки — https://swiperjs.com/get-started Чуть ниже заголовка «Use Swiper from CDN» копируем подключения и вставляем между тегами head:
Затем прописываем div с классом «swiper mySwiper». В нем создаем div c классом «swiper-wrapper» и далее в этом блоке прописываем div c классом «swiper-slide», создадим их 5 штук — Это будут наши слайды, в них я помещу для примера чисто картинки.
Потом в диве с классом «swiper mySwiper» создадим еще один div с классом «swiper-pagination» — это будет пагинация.
Теперь пропишем стрелки, для этого создаем 2 дива. Первая стрелка будет с классом «swiper-button-next», а вторая с «swiper-button-prev». В итоге весь html-код должен выглядеть таким образом:
Дальше накинем немного CSS стилей.
Тегам html и body зададим height: 100% и font-size: 15px;
К классу «swiper» пропишем width: 1000px; и height: 100%;
К слайдам зададим следующие стили: text-align: center; font-size: 18px; background-color: #fff; display: flex; justify-content: center; align-items: center;
Еще пропишем к swiper-slide img — width: 58%; и object-fit: cover; — Это размер картинок.
Также немного изменим у стрелок отталкивание от краев:
.swiper-button-next, .swiper-rtl .swiper-button-prev right: 140px !important;
left: auto;
>
.swiper-button-prev, .swiper-rtl .swiper-button-next left: 140px !important;
right: auto;
>
В итоге у вас должен получится вот такой css-код:
html, body < height: 100%; font-size: 15px; >.swiper < width: 1000px; height: 100%; >.swiper-slide < text-align: center; font-size: 18px; background-color: aliceblue; display: flex; justify-content: center; align-items: center; >.swiper-slide img < width: 58%; object-fit: cover; >.swiper-button-next, .swiper-rtl .swiper-button-prev < right: 140px !important; left: auto; >.swiper-button-prev, .swiper-rtl .swiper-button-next
То как работает слайдер вы можете посмотреть в моем ролике:
Весь иcходный код вы можете найти в моем GitHub.
Все виды слайдеров, которые вы можете использовать в своих работах, находятся в документации библиотеки.
Как сделать простой слайдер на HTML и JavaScript
Вы сверстали сайт и сделали его красивым с помощью CSS. Осталось добавить интерактива, и можно добавлять проект в портфолио.
«Оживить» на сайте можно что угодно: меню, модальные окна, корзину, пагинацию… В этой статье мы разберём слайдер — посмотрим, как его сделать на чистом JavaScript. Слайдер пригодится для раздела с отзывами, фотографиями сотрудников, изображениями товаров или чего-нибудь ещё — всё зависит только от вашей фантазии и проекта.
☝ Мы покажем лишь один из возможных вариантов. Это не эталонное решение, да в разработке и не бывает единственно верного способа решить задачу. Но код точно работает, поэтому можете скопировать его в свой проект.
Пример простого слайдера на чистом JavaScript
See the Pen Untitled by Feizerr (@feizerr) on CodePen.
Что здесь происходит
- Мы ищем в HTML-разметке контейнер слайдера, кнопки и изображения. Записываем всё в переменные.
- Находим общее количество слайдов. Затем создаём переменную slideIndex и делаем её равной 0 — это индекс активного слайда
- Добавляем обработчики событий на кнопки, чтобы реагировать на клики пользователя.
- Когда пользователь нажимает на кнопку .prev-button , мы переключаемся на предыдущий слайд (если текущий слайд не первый) и обновляем отображение слайдера.
- Когда пользователь нажимает на кнопку .next-button , переключаемся на следующий слайд (если текущий слайд не последний) и обновляем отображение слайдера.
- Функция updateSlider() обновляет отображение слайдера, показывая только текущий слайд и скрывая остальные.
- При загрузке страницы мы вызываем updateSlider() , чтобы отобразить первый слайд и настроить слайдер для начала работы.
Этот код можно бесконечно менять и дорабатывать: настроить анимацию, удалить зацикливание или сделать слайдер адаптивным. Или можно использовать наш пример, чтобы понять, как работает слайдер, а затем написать свой код — ещё проще и чище.
Популярные библиотеки для слайдеров
Если слайдер нужен здесь и сейчас, но писать с нуля не хочется, а пример выше не подходит — используйте библиотеки.
Slick
Гибкая библиотека для адаптивных слайдеров. Здесь можно настроить показ одного или нескольких слайдов, включить автоматическое переключение и задать скорость смены слайдов, подключить ленивую загрузку, настроить стрелки и пагинацию.
Swiper
«Самый современный мобильный сенсорный слайдер» — так разработчики говорят о своей библиотеке. В ней есть плавные переходы, 3D-анимации, автоматическое переключение слайдов, пагинация и навигация. А ещё здесь гибкие макеты: можно размещать слайды в несколько строк, добавлять несколько слайдов в столбец, управлять расстояниями между слайдами.
Owl Carousel
Простая в использовании библиотека, подойдёт даже новичкам. Она поддерживает различные переходы и анимации, есть настройки для автоматического переключения слайдов и пагинация.
Glide.js
Легковесная и быстрая библиотека: со всеми функциями она весит всего 28 КБ (8 КБ в сжатом виде). При этом подключать всё необязательно — лишние модули можно удалить, и тогда она станет ещё легче.
Параметров много. Можно настроить автоматическую прокрутку, добавить анимации, указать минимальное расстояние для смены слайда, включить зацикливание… Почти всё то же, что и в других библиотеках.
Какую из библиотек использовать — решать вам. У каждой понятная документация с примерами кода, вы точно разберётесь, как создать слайдер. И у всех гибкие настройки. Поэтому попробуйте поработать с каждой библиотекой или просто посмотрите примеры и выберите ту, что больше нравится и подходит вам.
🚀 Чтобы делать слайдеры любой сложности и вообще что угодно в вебе, приходите на профессию «JavaScript-разработчик».
Материалы по теме
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Обучение веб-разработке на практике: пишем слайдер на JavaScript
Обучение веб-разработке на практике эффективнее голой теории: всё наглядно, а полученные в ходе разработки решения можно использовать в будущих проектах. Именно поэтому мы совместно с онлайн-школой GeekBrains подготовили туториал по созданию простого слайдера изображений с объяснением каждого шага. Вот так будет выглядеть финальная версия:
Примечание Данная статья — лишь небольшое погружение в мир фронтенд-разработки, ведь современный веб не ограничивается знанием HTML/CSS/JavaScript. Чтобы стать востребованным веб-разработчиком, необходимо осваивать дополнительные библиотеки и фреймворки, которые часто строго разделены между фронтендом и бэкендом.
Что понадобится?
Можно сразу скачать IDE вроде WebStorm, но при обучении веб-разработке с нуля можно начать и в онлайн-редакторе. Мы будем использовать CodePen — популярный онлайн-редактор для веб-разработчиков с мгновенным отображением результата. Но если вы уже начали работу в какой-либо другой среде и считаете, что она намного удобнее, просто убедитесь, что есть поддержка HTML/CSS/JavaScript.
Пишем код
На различных курсах веб-разработки знакомство с фронтендом начинается с описания основных технологий, а именно:
- HTML — язык гипертекстовой разметки, на котором пишется «скелет» сайта. Если провести аналогию с домом, то это каркас. Грубо говоря, вы строите разметку, на которую после будет ложиться оформление.
- CSS — каскадные таблицы стилей или то самое оформление. Вернёмся к примеру с домом: после постройки его нужно облицевать, покрасить, сделать презентабельным, и именно CSS описывает внешний вид сайта.
- JavaScript — язык программирования, который обеспечивает функциональность. Вы можете взаимодействовать с вещами в вашем доме — включать и выключать свет, бытовую технику, воду и многое другое. Вы точно так же можете взаимодействовать с сайтом, нажимая кнопки, наводя курсор на изображения и заполняя формы. JavaScript обрабатывает все эти взаимодействия, и, как язык сценариев, он может предоставлять правила и логику для определения того, что должно произойти дальше.
HTML
Обучение веб-разработке стоит начать с HTML, так как это каркас сайта. Каждый HTML-документ имеет стандартную структуру:
не отображается на странице, помогает в работе с данными и хранит информацию для поисковых систем и браузеров: --> Текст
Ссылка
Но в нашем примере прописывать структуру всей страницы не нужно, ведь мы работаем с отдельным компонентом, который потом будет размещаться между тегами . Здесь всё просто: у нас есть основной блок (тег ), который является родительским и содержит ещё три блока с разными картинками — будущими слайдами:
Обратите внимание, что у каждого тега есть свой класс. Именно по этим классам будет применяться оформление CSS. В тегах мы указываем ссылки на те изображения, которые будут показываться. В атрибуте onclick мы обращаемся к конкретной функции JavaScript, привязывая к кнопке действие по клику.
CSS
В каскадных стилях задаём ширину, высоту, позиционирование, цвет и анимацию. В нашем случае мы работаем отдельно с контейнером слайдера, отдельно с контейнерами картинок, которые прописаны как item, кнопками, добавлением к ним фона и анимацией слайдов:
/* Слайдер: */ .slider < max-width: 90%; /* Положение элемента устанавливается относительно его исходной позиции: */ position: relative; /* Центрируем по горизонтали: */ margin: auto; height: 300px; >/* Картинка масштабируется по отношению к родительскому элементу: */ .slider .item img < /* Элемент меняет размер так, чтобы заполнить блок и сохранить пропорции: */ object-fit: cover; width: 100%; height: 300px; >/* Кнопки назад и вперёд: */ .slider .previous, .slider .next < /* Добавляет курсору иконку, когда тот оказывается над кнопкой: */ cursor: pointer; /* Положение элемента задаётся относительно границ браузера: */ position: absolute; top: 50%; width: auto; margin-top: -22px; padding: 16px; /* Оформление самих кнопок: */ color: white; font-weight: bold; font-size: 16px; /* Плавное появление фона при наведении курсора: */ transition: 0.6s ease; /* Скругление границ: */ border-radius: 0 3px 3px 0; >.slider .next < right: 0; border-radius: 3px 0 0 3px; >/* При наведении курсора на кнопки добавляем фон кнопок: */ .slider .previous:hover, .slider .next:hover < background-color: rgba(0, 0, 0, 0.2); >/* Анимация слайдов: */ .slider .item < animation-name: fade; animation-duration: 1.5s; >@keyframes fade < /* Устанавливаем и изменяем степень прозрачности: */ from < opacity: 0.4 >to < opacity: 1 >>
Со всеми значениями можно поэкспериментировать в редакторе. Если есть сомнения по поводу какого-то из атрибутов, достаточно его удалить и посмотреть, что изменилось.
JavaScript
Веб-разработчик, обучение которого ограничивается HTML и CSS, — это скорее веб-дизайнер. Мы же переходим к главному языку фронтенда, который способен вдохнуть жизнь в визуальное решение:
/* Устанавливаем стартовый индекс слайда по умолчанию: */ let slideIndex = 1; /* Вызываем функцию, которая реализована ниже: */ showSlides(slideIndex); /* Увеличиваем индекс на 1 — показываем следующий слайд: */ function nextSlide() < showSlides(slideIndex += 1); >/* Уменьшаем индекс на 1 — показываем предыдущий слайд: */ function previousSlide() < showSlides(slideIndex -= 1); >/* Устанавливаем текущий слайд: */ function currentSlide(n) < showSlides(slideIndex = n); >/* Функция перелистывания: */ function showSlides(n) < /* Обращаемся к элементам с названием класса "item", то есть к картинкам: */ let slides = document.getElementsByClassName("item"); /* Проверяем количество слайдов: */ if (n >slides.length) < slideIndex = 1 >if (n < 1) < slideIndex = slides.length >/* Проходим по каждому слайду в цикле for: */ for (let slide of slides) < slide.style.display = "none"; >/* Делаем элемент блочным: */ slides[slideIndex - 1].style.display = "block"; >
Но не стоит забывать, что не JavaScript единым: современные библиотеки и фреймворки способны упростить разработку и улучшить функциональность веб-компонента. Например, Bootstrap позволяет верстать сайты в разы быстрее, и даже начинающий разработчик может создать рабочий макет с использованием данного фреймворка. А ещё можно написать слайдер на чистом HTML/CSS, чтобы потренировать навыки в вёрстке и каскадных таблицах стилей.
Приведённый в уроке пример довольно прост и призван показать возможности стандартного взаимодействия HTML, CSS и JavaScript.
Готовый слайдер изображений
В финальной версии слайдера использовано несколько картинок, две кнопки с изменением фона при наведении курсора и плавная анимация перехода. Как видно из нашего примера, обучение веб-разработке может базироваться на практике: это не только пробуждает интерес, но и позволяет экспериментировать, улучшать, изменять функциональность компонентов на своё усмотрение, параллельно пополняя багаж знаний и навыков.
Теперь вы можете попробовать другие способы реализации, перейти к использованию дополнительных инструментов, таких как Bootstrap: