Как сделать карусель на сайте css html без js

Обновлено: 06.07.2024

Слайдер для сайта на CSS и JavaScript

4. С индикаторами и автоматической сменой слайдов через 7 секунд:

Слайдер с автоматической сменой слайдов и индикаторами

5. Слайдер для ротации статей (из дополнительных опций – он обновляет своё состояние при изменении размеров окна браузера):

Слайдер для ротации статей или постов, который может изменять своё состояние при изменении размеров окна браузера

6. Слайдер в модальном окне:

Слайдер в модальном окне

О слайдере ChiefSlider

ChiefSlider – это легкий адаптивный слайдер для сайта, написанный на чистом JavaScript без каких-либо зависимостей.

  • размер JavaScript кода менее 9 Кбайт;
  • не требует никаких JavaScript библиотек, таких как jQuery и др.;
  • макет выполнен на flexbox, что позволяет выполнять настройку сетки слайдов на чистом CSS;
  • поставляется со встроенными элементами навигации: стрелками и индикаторами;
  • бесконечная прокрутка и автоматическое воспроизведение (смена слайдов) через определённые интервалы времени;
  • поддержка перелистывания слайдов смахиванием (touch swipe) для устройств с сенсорным экраном и перетаскиванием мышью;
  • зацикленность в отличие от других очень популярных слайдеров и каруселей (slick, splide, swiper, owlCarousel и др.) реализована без клонирования элементов (т.е., например, слайдер не создаёт копию последнего элемента для вставки перед первым и первого для его размещения после последнего).

ChiefSlider полностью бесплатен и имеет открытый исходный код (под лицензией MIT).

Ссылка на проект ChiefSlider: перейти.

Поддержите ChiefSlider и помогите сделать его ещё лучше! Ваша поддержка очень много значит для нас!

Загрузка и подключение скриптов слайдера

Загрузить эти файлы в свой проект можно из архива проекта ui-components.

После помещения этих файлов в свой проект их нужно подключить к HTML странице:

HTML-макет ChiefSlider

Основная HTML-структура слайдера выглядит так:

Вставьте внутрь каждого элемента .slider__item нужное содержимое, например изображение.

Инициализация и настройка слайдера

Инициализация слайдера осуществляется посредством вызова функции-конструктора ChiefSlider при помощи оператора new :

Инициализацию слайдера в необходимо выполнять только после того, как DOM будет полностью загружен и построен:

Конструктор принимает в качестве первого аргумента селектор или DOM Element.

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

Пример кода для инициализации всех элементов с классом slider :

Если вам не нужна поддержка IE, то для перебора элементов вместо for можно воспользоваться forEach .

Настройка количества слайдов

Настройка количества активных элементов в слайдере осуществляется с помощью CSS.

По умолчанию слайдер настроен для показа одного активного элемента. В коде это выполнено так:

Как создать карусель, используя только HTML и CSS без JavaScript!

carousel

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

В проектах, с которыми мы работали, была карусель. У нас были идеи о том, как мы можем сделать эту работу, используя CSS-анимации и transform property, но это дало бы карусель, прокручивающуюся автоматически и не разрешающую пользовательский ввод, что мам не было нужно. Немного подумав, мы приняли решение, которое использует абсолютное позиционирование и :target псевдо-селектор для изменения z-index и opacity нашей карусели, чтобы циклировать через них.

Давайте создадим такое!

Структура

Структура нашей карусели выглядит примерно так: у нас есть главный div.carousel-wrapper, который дает нашей карусели размер. Внутри нашей оболочки, у нас есть span.hidden-target элементы с уникальными идентификаторами, которые действуют в качестве мишеней для наших пунктов управления карусели и div.carousel-item элементов, которые содержат контент каждого из пунктов карусели.

Каждый из div.carousel-item элементов будет иметь контент, и две ссылки, a.arrow-prev и a.arrow-next, который мы используем для цикла между элементами карусели.

Потому что наши отдельные элементы карусели будут position: absolute (мы можем сложить их на вершине друг друга), мы должны установить высоту div.carousel-wrapper вручную. Мы собираемся попытаться разгрузить CSS к нашей внешней таблицы стилей, но некоторые из пунктов мы должны будем написать, чтобы сделать нашу карусель используемой и масштабируемой.

Мы также используем CSS, чтобы установить фоновое изображение из двух наших div.carousel-item элементов, чтобы сделать их более яркими, но мы оставим это ниже, чтобы наша разметка была более читаемой.

Вот и весь HTML. Он удивительно легкий. В CSS (SCSS, в данном случае), вот где происходит волшебство.

Стили

У вас есть карусель, которая полностью функциональна и на 100% состоит из HTML и CSS! Мы создали карусель с тремя элементами, но вы можете продолжать добавлять элементы, убедитесь, что вы добавляете больше целевых элементов, и связываете ваши ссылки правильно.

Ant-карусель на CSS и Javascript

С появлением CSS3 появилась возможность совершать анимацию без использования JS-библиотек, таких, например, как jQuery. CSS3 свойство transition позволяет плавно изменять другие свойства элемента (width, height, margin, opacity и пр.), задав в качестве параметров время и закон трансформации. Предлагаю небольшую по размерам, но достаточно функциональную карусель на чистом Javascript. Небольшую, как муравей, что гораздо меньше чем сова. Но почти с такими же возможностями.

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

    , но вместо них можно использовать

, если вам это удобнее. Стрелки и индикаторные точки располагаются абсолютным позиционированием в соответствующих контейнерах. Для стрелок используются рисунки в виде треугольных скобок, которые, при желании, вы можете заменить своими рисунками или генерацией изображения псевдо-элементами :before и :after.

Создаём карусель с тремя видимыми элементами и шириной элемента 270 пикселей. Тогда максимальная ширина карусели 810 пикселей. Подключаем CSS-файл:

Располагаем элементы в контейнере ant-carousel-list, устанавливаем для него свойство display: flex и прижимаем все элементы к левому краю justify-content: flex-start. Свойство flex: 0 0 auto устанавливает flex-shrink в 0 (по умолчанию 1). Прокрутка элементов карусели осуществляется при помощи свойства transiton плавным изменением отступа margin-left от нуля до ширины элемента (в одну сторону) или от ширины элемента до нуля (в другую сторону). Для функции трансформации (прокрутки) используется значение ease.

Переходим к программе. В опциях программы можно настраивать:

  • количество видимых элементов;
  • просмотр элементов в виде ленты от первого до последнего или в бесконечном цикле (лента замыкается в кольцо);
  • автоматическая или ручная прокрутка элементов;
  • интервал автоматической прокрутки;
  • скорость анимации;
  • включение/отключение элементов навигации: стрелки, индикаторные точки, перелистывание прикосновением (для тактильных экранов).

Алгоритм прокрутки элементов отличается в зависимости от того, включена опция цикла или нет. Если включена, при прокрутке вправо (функция elemPrev) свойство margin-left всей линейки элементов this.crslList уменьшается от нуля до отрицательного значения, равного ширине элемента elemWidth. Одновременно последний элемент справа клонируется и вставляется перед первым элементом, после чего последний элемент удаляется. Линейке присваивается свойство ‘transition: margin ‘+ options.speed+’ms ease’, где options.speed – скорость анимации, ease – функция анимации. Теперь можно осуществлять прокрутку. Свойство margin-left плавно меняется от отрицательного значения до нуля, вся линейка плавно смещается вправо и элемент, который был последним, оказывается на первом месте. Спустя options.speed микросекунд линейке присваивается прежнее значение ’transition: none’.

Если нужно прокрутить n элементов одновременно, перестановка элементов осуществляется в цикле n раз, а расстояние margin-left увеличивается в n раз.

Прокрутка влево (функция elemNext) происходит в обратном порядке. Сначала линейке this.crslList присваивается свойство ‘transition: margin ‘+ options.speed+’ms ease’ и линейка плавно прокручивается влево (crslList.style.marginLeft = ‘-‘ + elemWidth + ‘px’). Далее спустя options.speed микросекунд первый элемент клонируется и вставляется в конец линейки, после чего первый элемент удаляется. Линейке возвращается значение ‘transition: none’. Если нужно прокрутить n элементов одновременно, перестановка элементов так же, как и в предыдущем случае, осуществляется в цикле n раз и расстояние margin-left увеличивается в n раз.

Если опция цикла выключена, то в этом случае перестановок элементов нет, а вся линейка элементов смещается как единое целое влево или вправо до своих крайних точек. Линейке элементов this.crslList свойство ‘transition: margin ‘+ options.speed+’ms ease’ присваивается ещё при инициализации карусели и больше не удаляется.

Вызов карусели производится по имени класса ant-carousel или по идентификатору. Во втором случае можно разместить несколько каруселей на одной странице. Файл index.html с каруселью может выглядеть так:

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

Создание карусели/слайдера с помощью плагина Owl Carousel 2

Подключение Owl Carousel 2 на своем сайте

Подключаем в хедере, в примере абсолютные пути на CDN, но лучше подключать стили и скрипты со своего сайта.

Подключаем в футере jQuery, библиотеку OwlCarousel2 и свйо файл скриптов, в котором инициализируем и настраиваем слайдер.
Здесь указаны абсолютные ссылки на CDN, но лучше подключать все стили и скрипты со своего сайта, предварительно скачав все файлы по этой ссылке.

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

Пример слайдера Owl Carousel 2 с тремя слайдами:

Содержимое файла script.js

Пример слайдера Owl Carousel 2 с тремя слайдами:

Чтобы задать кастомные стрелки, например, это нужно для какого-то конкретного слайдера по дизайну, добавляем:

Чтобы использовать базовые стили для навигации из файла owl.theme.default.min.css , необходимо добавить класс owl-theme к контейнеру карусели:

Можно вынести стрелки навигации за контейнер карусели, данный код добавляем после инициализации карусели:

Делаем карусель адаптивной:

Как добавить видео в карусель Owl Carousel:

1. Добавляем в options:

2. Используем такую разметку для HTML:

3. В данном примере еще используется такое правило в CSS:

Пример вывода видео в слайдере Owl Carousel:

Как сделать анимированную смену слайдов

Сначала подключаем дополнительно файл стилей animate.css, можно отсюда:

А затем в опции карусели добавляем, например, эффект затухания:

На примере ниже установлены такие опции для анимации слайдов:

Пример реализации анимированной карусели Owl Carousel:

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

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

В моем примере я использую граничное значение 600px, чтобы результат точно отобразился внутри контента моего сайта, но для мобильных вы можете использовать breakpoint 768px или любое другое.

Код JS для инициализации Owl Carousel 2 на мобильных и дестроя на десктопе:
Пример инициализации Owl Carousel 2 на мобильных и дестроя на десктопе

Для наглядности скройте все вкладки кроме Результата.

Рекомендую к прочтению:

Комментарии (44) к “Создание карусели/слайдера с помощью плагина Owl Carousel 2”

Елена

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

Denis Creative

В моей статье нет речи про админку. Я только привел примеры, как добавить owl-carousel на свой сайт.
Если вы используете плагин с Owl Carousel на своем сайте на CMS WordPress, то лучше указать, что за плагин, и более подробно, что не получается.

Денис

Подскажите как сделать что бы на автомате слайды шли слева на право ?

Denis Creative
Александр

Добрый день! а как сделать autoplayTimeout рандомным для каждого следующего слайда ?

Denis Creative

Используйте функцию Math.random()

Дмитрий

Доброго времени дня! Как мне разграничить параметр autoWidth: если у одного слайдера он должен быть autoWidth:!0, а у второго autoWidth:!1.?

palexa

Не понял, куда это добавить на странице ?

Denis Creative

В свой скрипт, должно получиться что-то вроде такого:

Богдан
Богдан

Как сделать чтобы выбранные елементы стали по центру

Denis Creative

Добавьте код на codepen, чтобы было понятно, что нужно и какой вид получается.

Denis Creative
Богдан
Denis Creative
Богдан

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

Denis Creative

в startPosition: или 1, или 2.

Богдан

оно не работает

Богдан
Denis Creative
Роман

Привет, а как сделать что высота блока с каруселью зависела от содержимого? у меня несколько слайдов разной высоты (разное кол-во текста) и высота всего блока получается по высоте самого большого. а нужно чтоб высота плавала в зависимости от того какой высоты слайд показывается.
спасибо заранее!

Denis Creative
Роман

Денис, спасибо большое! помогло 🙂
а есть ли ресурс где все опции скрипта расписаны?

Denis Creative

В самом начале статьи есть 2 ссылки на сайт карусели и на все параметры скрипта.)

Роман

Простите за невнимательность 🙂 Вашу статью прочитал подробно, а вот ссылки упустил.
еще раз спасибо за помощь!

Андрей

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

Denis Creative

Такого не встречал.

Андрей
Denis Creative

Проверьте верстку, если слайдер работает, то дело не в JS.

Андрей

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

Denis Creative

Попробую отследить этот момент.

У вас на сайте при перелистывании в обе стороны мелькает пустой слайд, поэтому я и предположил, что возможно, в верстке есть незаполненный контентом слайд, возможно слайды строятся на основании цикла, и какой-то элемент пустой. Еще как вариант, у вас в слайдах используется ID, и возможно при клонировании, контент не подгружается в дублирующийся ID, но это просто вариант, потому что не понятно, как этот слайдер создается, я вижу только исходный код с кучей сгенерированных блоков.

Dmitry

А можно как-то реализовать, что бы изображения располагались вертикально, но ротация оставалась горизонтальной?

Denis Creative

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

Denis Creative
Дмитрий

Почему нет абсолютно никакой информации про динамическое создание блоков в карусели?(

Denis Creative

Потому что это какой-то частный случай, который не нужен для 99.99% пользователей.

не работает
пишет

Способ поставить загрузку jqwery первым не работает

Denis Creative

Не подключен скрипт карусели owl.carousel.min.js

Денис

owl carousel 2

Подскажите как реализовать что бы были картинки с нумерацией в навигации

Самый простой слайдер на чистом javascript с очень простым кодом, который работает во всех шаблонах, на которых я его тестировал.

Картинок можно добавлять сколько угодно. Все они будут появляться с заданным интервалом.




function nextCarousel() carousels[currentCarousel].className = 'carousel';
currentCarousel = (currentCarousel+1)%carousels.length;
carousels[currentCarousel].className = 'carousel demonstration';
>
/script >

.carousel position : absolute ;
left : 0 ;
top : 0 ;
opacity : 0 ;
transition : opacity 3s ; /* Время появления картинки */
>

.demonstration opacity : 1 ;
>

Желаю творческих успехов.

А ну-ка, что там ещё интересного


Не помучаться, а пошевелить мозгами, что вы и сделали. Молодец.

Без конкретной ширины и высоты получается кака…

Ваня, а ты разве не видишь что он работает?

Код в примере так как он написан — не будет работать. У автора нет понимания основ JS

всем привет я наверное не один такой . вставил код js все огонь работает, но мне понадобилось несколько каруселек и тут фиг-вам, работают по очереди.
Подскажи,что поменять в коде?

Пользуйтесь на здоровье

Уважаемый автор. Весьма был доволен Вашим кодом для простого слайдера.
С уважением, Сергей, 67 лет, г. Москва.

Попробуйте вот в таком виде. Я кое что исправил.

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

Здравствуйте, Сергей. Мой первый сайт не в WordPress, поэтому шорткод мне не нужен. Я пишу сайт вручную. Вставила туда карусель от Вас на css. Всё отлично работает. Попробовала на JS — ничего. Ну рано, так рано. Всё равно спасибо, много интересного на Вашем сайте.

Наверное Наташ чуть рановато. Эта карусель сделана для песочницы, т.е чистый код. В шаблоне можно попробовать вставить весь код, и css и html и script в шёрткод, и вывести в нужном месте. Если же вставлять этот слайдер в шапке, то можно опять попробовать шёрткод в хеадер, или html в header, scc в style, а скрипт через функцию в functions.php. Короче дело ясное, что дело тёмное? Так для каждого шаблона ещё будут нюансы в которых сначала надо разобраться. Попробуйте через шёрткод, если не получится, оставьте до приобретения более основательных знаний, а то просто не поймёте меня. Вообще вставить в ручную карусель в шаблон под силу только не плохому программисту.

Все скопировала, css в файл css, картинки в контент, JavaScript в html файл в .
Ничего не заработало. Картинки лежат в контенте спокойненько. Ничего не движется.
Что не так? (делаю первый сайт, поэтому мало что понимаю, в джаваскрипт вообще ничего)


Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст.

Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст. Какой-то текст.

Всплывающие подсказки

ПАЛИТРА ЦВЕТОВ

КАК СДЕЛАТЬ

Ваше предложение:

Спасибо за Вашу помощь!

Топ Учебники

Топ Справочники

Топ Примеры

Веб Сертификаты

Этот сайт оптимизирован для обучения, тестирования и обучения. Примеры могут быть упрощены для улучшения чтения и базового понимания. Учебные пособия, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность и работоспособность всего контента. Используя этот сайт, вы соглашаетесь с тем, что прочитали и приняли условия использования, cookie и политики конфиденциальности. Copyright 1999-2019 by Refsnes Data. All Rights Reserved.
Сайт работает на фреймворке W3.CSS.

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