Компонент слайд-шоу для циклического просмотра элементов - изображений или текстовых слайдов - например, карусели.
Как это работает
Карусель - это слайд-шоу для циклического просмотра серии контента, созданного с помощью преобразований CSS 3D и небольшого количества JavaScript. Он работает с серией изображений, текста или пользовательской разметки. Он также включает поддержку предыдущего/следующего элементов управления и индикаторов.
В браузерах, где поддерживается API видимости страницы, карусель не будет скользить, когда веб-страница не видна пользователю (например, когда браузер вкладка неактивна, окно браузера свернуто и т.д.).
prefers-reduced-motion
. См. Раздел с уменьшенным движением в нашей документации по специальным возможностям.
Имейте в виду, что вложенные карусели не поддерживаются, а карусели обычно не соответствуют стандартам доступности.
И, наконец, если Вы создаете наш JavaScript из исходного кода, он требует util.js
.
Пример
Карусели не нормализуют автоматически размеры слайдов. Таким образом, Вам может потребоваться использовать дополнительные утилиты или настраиваемые стили для соответствующего размера содержимого. Хотя карусели поддерживают элементы управления и индикаторы «предыдущий/следующий», они явно не требуются. Добавляйте и настраивайте по своему усмотрению.
Класс .active
необходимо добавить к одному из слайдов , иначе карусель не будет видна. Также не забудьте установить уникальный id
в .carousel
для дополнительных элементов управления, особенно если Вы используете несколько каруселей на одной странице. Элементы управления и индикаторы должны иметь атрибут data-target
(или href
для ссылок), который соответствует id
элемента .carousel
.
Только слайды
Вот карусель только со слайдами. Обратите внимание на наличие .d-block
и .w-100
на изображениях карусели, чтобы предотвратить выравнивание изображений по умолчанию в браузере.
<div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
</div>
С элементами управления
Добавление предыдущего и следующего элементов управления. Мы рекомендуем использовать элементы <button>
, но вы также можете использовать элементы <a>
c role="button"
.
<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleControls" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Предыдущий</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleControls" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Следующий</span>
</button>
</div>
С индикаторами
Вы также можете добавить индикаторы в карусель вместе с элементами управления.
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
<li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleIndicators" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Предыдущий</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleIndicators" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Следующий</span>
</button>
</div>
С подписями
Легко добавляйте подписи к слайдам с помощью элемента .carousel-caption
внутри любого .carousel-item
. Их можно легко скрыть на небольших окнах просмотра, как показано ниже, с помощью дополнительных утилит дисплея. Сначала мы скрываем их с помощью .d-none
и возвращаем их на устройства среднего размера с помощью .d-md-block
.
<div id="carouselExampleCaptions" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleCaptions" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Метка первого слайда</h5>
<p>Некоторый репрезентативный заполнитель для первого слайда.</p>
</div>
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Метка второго слайда</h5>
<p>Некоторый репрезентативный заполнитель для второго слайда.</p>
</div>
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Метка третьего слайда</h5>
<p>Некоторый репрезентативный заполнитель для третьего слайда.</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleCaptions" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Предыдущий</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleCaptions" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Следующий</span>
</button>
</div>
Перекрестное затухание
Добавьте .carousel-fade
в свою карусель, чтобы анимировать слайды с плавным переходом вместо слайда. В зависимости от содержимого вашей карусели (например, слайды, содержащие только текст), вы можете добавить .bg-body
или какой-нибудь пользовательский CSS к .carousel-item
для правильного плавного перехода.
<div id="carouselExampleFade" class="carousel slide carousel-fade" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleFade" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Предыдущий</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleFade" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Следующий</span>
</button>
</div>
Индивидуальный интервал .carousel-item
Добавьте data-interval=""
в .carousel-item
, чтобы изменить время задержки между автоматическим циклическим переходом к следующему элементу.
<div id="carouselExampleInterval" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active" data-interval="10000">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item" data-interval="2000">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleInterval" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Предыдущий</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleInterval" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Следующий</span>
</button>
</div>
Отключить сенсорное смахивание
Карусели поддерживают смахивание влево / вправо на устройствах с сенсорным экраном для перемещения между слайдами. Это можно отключить с помощью атрибута data-touch
. Пример ниже также не включает атрибут data-ride
и имеет data-interval="false"
, поэтому он не запускается автоматически.
<div id="carouselExampleControlsNoTouching" class="carousel slide" data-touch="false" data-interval="false">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
<button class="carousel-control-prev" type="button" data-target="#carouselExampleControlsNoTouching" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Предыдущий</span>
</button>
<button class="carousel-control-next" type="button" data-target="#carouselExampleControlsNoTouching" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Следующий</span>
</button>
</div>
Применение
Через атрибуты данных
Используйте атрибуты данных, чтобы легко контролировать положение карусели. data-slide
принимает ключевые слова prev
или next
, которые изменяют положение слайда относительно его текущего положения. В качестве альтернативы, используйте data-slide-to
, чтобы передать необработанный индекс слайда в карусель data-slide-to="2"
, который сдвигает положение слайда на конкретный индекс, начинающийся с 0
.
Атрибут data-ride="carousel"
используется для пометки карусели как анимированной, начиная с загрузки страницы. Если Вы не используете data-ride="carousel"
для инициализации карусели, Вам придется инициализировать ее самостоятельно. Его нельзя использовать в сочетании с (избыточной и ненужной) явной инициализацией JavaScript той же карусели.
Через JavaScript
Вызов карусели вручную с помощью:
$('.carousel').carousel()
Параметры
Параметры могут передаваться через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-
, как в data-interval=""
.
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
interval | number | 5000 | Время задержки между автоматическим циклическим переключением элемента. Если false , карусель не будет автоматически повторяться. |
keyboard | boolean | true | Должна ли карусель реагировать на события клавиатуры. |
pause | string | boolean | "hover" | Если установлено значение На устройствах с сенсорным экраном, когда установлено значение |
ride | string | false | Автоматически воспроизводит карусель после того, как пользователь вручную перебирает первый элемент. Если 'carousel' , автоматически воспроизводит карусель при загрузке. |
wrap | boolean | true | Должна ли карусель работать непрерывно или иметь жесткие остановки. |
touch | boolean | true | Должна ли карусель поддерживать взаимодействие смахивания влево/вправо на устройствах с сенсорным экраном. |
Методы
Асинхронные методы и переходы
Все методы API асинхронны и запускают переход. Они возвращаются к вызывающей стороне, как только переход начинается, но до его завершения. Кроме того, вызов метода переходного компонента будет проигнорирован.
Дополнительную информацию см. в нашей документации по JavaScript.
.carousel(options)
Инициализирует карусель необязательным параметром object
и начинает циклический просмотр элементов.
$('.carousel').carousel({
interval: 2000
})
.carousel('cycle')
Перебирает элементы карусели слева направо.
.carousel('pause')
Останавливает карусель от циклического перебора элементов.
.carousel(number)
Циклически переключает карусель на определенный кадр (на основе 0, аналогично массиву). Возврат к вызывающей стороне до того, как целевой элемент будет показан (то есть до того, как произойдет событие slid.bs.carousel
).
.carousel('prev')
Переход к предыдущему элементу. Возврат к вызывающему абоненту до того, как будет показан предыдущий элемент (то есть до того, как произойдет событие slid.bs.carousel
).
.carousel('next')
Переход к следующему элементу. Возврат к вызывающей стороне до того, как будет показан следующий элемент (т.е. до того, как произойдет событие slid.bs.carousel
).
.carousel('dispose')
Разрушает карусель элемента.
.carousel('nextWhenVisible')
Не циклически переходите к следующей карусели, если страница не отображается или карусель или ее родительский элемент не видны. Возврат к вызывающей стороне до того, как будет показан следующий элемент (т.е. до того, как произойдет событие slid.bs.carousel
).
.carousel('to')
Циклически переключает карусель на определенный кадр (на основе 0, аналогично массиву). Возврат к вызывающей стороне до того, как будет показан следующий элемент (т.е. до того, как произойдет событие slid.bs.carousel
).
События
Класс карусели Bootstrap предоставляет два события для подключения к функциональности карусели. Оба события имеют следующие дополнительные свойства:
direction
: Направление, в котором движется карусель ("влево"
или"вправо"
).relatedTarget
: Элемент DOM, который вставляется на место в качестве активного элемента.from
: Индекс текущего элементаto
: Индекс следующего элемента
Все события карусели запускаются в самой карусели (т.е. в <div class="carousel">
).
Тип события | Описание |
---|---|
slide.bs.carousel | Это событие запускается немедленно при вызове метода экземпляра slide . |
slid.bs.carousel | Это событие вызывается, когда карусель завершает переход между слайдами. |
$('#myCarousel').on('slide.bs.carousel', function () {
// сделайте что-нибудь...
})
Изменить продолжительность перехода
Длительность перехода .carousel-item
может быть изменена с помощью переменной Sass $carousel-transition
перед компиляцией или пользовательскими стилями, если Вы используете скомпилированный CSS. Если применяется несколько переходов, убедитесь, что сначала определен переход преобразования (например, transition: transform 2s ease, opacity .5s ease-out
).