Въртележка
Компонент за слайдшоу за циклично преминаване през елементи - изображения или слайдове с текст - като въртележка.
Как работи
Въртележката е слайдшоу за циклично преминаване през поредица от съдържание, изградено с CSS 3D трансформации и малко JavaScript. Работи с поредица от изображения, текст или персонализирано маркиране. Той също така включва поддръжка за предишни/следващи контроли и индикатори.
В браузъри, където API за видимост на страницата се поддържа, въртележката ще избегне плъзгане, когато уеб страницата не е видима за потребителя (като например, когато разделът на браузъра е неактивен, прозорецът на браузъра е минимизиран и т.н.).
prefers-reduced-motion
медийната заявка. Вижте раздела за
намалено движение в нашата документация за достъпност .
Моля, имайте предвид, че вложените въртележки не се поддържат и въртележките обикновено не отговарят на стандартите за достъпност.
Пример
Въртележките не нормализират автоматично размерите на слайда. Поради това може да се наложи да използвате допълнителни помощни програми или персонализирани стилове за подходящо оразмеряване на съдържанието. Въпреки че въртележките поддържат предишни/следващи контроли и индикатори, те не са изрично задължителни. Добавете и персонализирайте, както сметнете за добре.
Класът .active
трябва да се добави към един от слайдовете , в противен случай въртележката няма да се вижда. Също така не забравяйте да зададете уникален id
за .carousel
незадължителни контроли, особено ако използвате няколко въртележки на една страница. Контролните и индикаторните елементи трябва да имат data-bs-target
атрибут (или href
за връзки), който съответства id
на .carousel
елемента.
Само слайдове
Ето въртележка само с пързалки. Обърнете внимание на наличието на изображенията .d-block
и .w-100
на въртележката, за да предотвратите подравняването на изображенията по подразбиране на браузъра.
<div id="carouselExampleSlidesOnly" class="carousel slide" data-bs-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>
елементи с role="button"
.
<div id="carouselExampleControls" class="carousel slide" data-bs-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-bs-target="#carouselExampleControls" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
С индикатори
Можете също да добавите индикаторите към въртележката, заедно с контролите.
<div id="carouselExampleIndicators" class="carousel slide" data-bs-ride="true">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<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-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
С надписи
Добавяйте лесно надписи към вашите слайдове с .carousel-caption
елемента във всеки .carousel-item
. Те могат лесно да бъдат скрити в по-малки екрани, както е показано по-долу, с допълнителни помощни програми за показване . Първоначално ги скриваме с .d-none
и ги връщаме обратно на средно големи устройства с .d-md-block
.
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="false">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<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>First slide label</h5>
<p>Some representative placeholder content for the first slide.</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>Second slide label</h5>
<p>Some representative placeholder content for the second slide.</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>Third slide label</h5>
<p>Some representative placeholder content for the third slide.</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Crossfade
Добавете .carousel-fade
към вашата въртележка, за да анимирате слайдове с избледняващ преход вместо слайд. В зависимост от съдържанието на въртележката ви (напр. слайдове само с текст), може да искате да добавите .bg-body
или някакъв персонализиран CSS към .carousel-item
s за правилно преминаване.
<div id="carouselExampleFade" class="carousel slide carousel-fade" data-bs-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-bs-target="#carouselExampleFade" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleFade" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Индивидуален .carousel-item
интервал
Добавете data-bs-interval=""
към a .carousel-item
, за да промените времето за забавяне между автоматично преминаване към следващия елемент.
<div id="carouselExampleInterval" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active" data-bs-interval="10000">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item" data-bs-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-bs-target="#carouselExampleInterval" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Деактивирайте плъзгането с докосване
Въртележките поддържат плъзгане наляво/надясно на устройства със сензорен екран за придвижване между слайдове. Това може да бъде деактивирано с помощта на data-bs-touch
атрибута. Примерът по-долу също не включва data-bs-ride
атрибута, така че не се пуска автоматично.
<div id="carouselExampleControlsNoTouching" class="carousel slide" data-bs-touch="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-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControlsNoTouching" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Тъмен вариант
Добавете .carousel-dark
към .carousel
за по-тъмни контроли, индикатори и надписи. Контролите са обърнати от тяхното бяло запълване по подразбиране със filter
свойството CSS. Надписите и контролите имат допълнителни Sass променливи, които персонализират color
и background-color
.
<div id="carouselExampleDark" class="carousel carousel-dark slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#carouselExampleDark" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active" data-bs-interval="10000">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>First slide label</h5>
<p>Some representative placeholder content for the first slide.</p>
</div>
</div>
<div class="carousel-item" data-bs-interval="2000">
<img src="..." class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h5>Second slide label</h5>
<p>Some representative placeholder content for the second slide.</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>Third slide label</h5>
<p>Some representative placeholder content for the third slide.</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleDark" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
Персонализиран преход
Продължителността на прехода .carousel-item
може да бъде променена с $carousel-transition-duration
променливата Sass преди компилиране или персонализирани стилове, ако използвате компилирания CSS. Ако са приложени множество преходи, уверете се, че първо е дефиниран преходът за трансформация (напр transition: transform 2s ease, opacity .5s ease-out
. ).
дързък
Променливи
Променливи за всички въртележки:
$carousel-control-color: $white;
$carousel-control-width: 15%;
$carousel-control-opacity: .5;
$carousel-control-hover-opacity: .9;
$carousel-control-transition: opacity .15s ease;
$carousel-indicator-width: 30px;
$carousel-indicator-height: 3px;
$carousel-indicator-hit-area-height: 10px;
$carousel-indicator-spacer: 3px;
$carousel-indicator-opacity: .5;
$carousel-indicator-active-bg: $white;
$carousel-indicator-active-opacity: 1;
$carousel-indicator-transition: opacity .6s ease;
$carousel-caption-width: 70%;
$carousel-caption-color: $white;
$carousel-caption-padding-y: 1.25rem;
$carousel-caption-spacer: 1.25rem;
$carousel-control-icon-width: 2rem;
$carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>");
$carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>");
$carousel-transition-duration: .6s;
$carousel-transition: transform $carousel-transition-duration ease-in-out; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
Променливи за тъмната въртележка :
$carousel-dark-indicator-active-bg: $black;
$carousel-dark-caption-color: $black;
$carousel-dark-control-icon-filter: invert(1) grayscale(100);
Използване
Чрез атрибути на данни
Използвайте атрибути на данни, за да контролирате лесно позицията на въртележката. data-bs-slide
приема ключовите думи prev
или next
, което променя позицията на слайда спрямо текущата му позиция. Като алтернатива използвайте, data-bs-slide-to
за да прехвърлите необработен индекс на слайд към въртележката data-bs-slide-to="2"
, която измества позицията на слайда към конкретен индекс, започващ с 0
.
Атрибутът data-bs-ride="carousel"
се използва за маркиране на въртележка като анимираща, започваща при зареждане на страницата. Ако не използвате data-bs-ride="carousel"
за инициализиране на вашата въртележка, трябва да я инициализирате сами. Не може да се използва в комбинация с (излишна и ненужна) изрична JavaScript инициализация на същата въртележка.
Чрез JavaScript
Ръчно извикване на въртележка с:
const carousel = new bootstrap.Carousel('#myCarousel')
Настроики
Тъй като опциите могат да се предават чрез атрибути на данни или JavaScript, можете да добавите име на опция към data-bs-
, както в data-bs-animation="{value}"
. Уверете се, че сте променили типа регистър на името на опцията от „ camelCase ” на „ kebab-case ”, когато предавате опциите чрез атрибути на данни. Например използвайте data-bs-custom-class="beautifier"
вместо data-bs-customClass="beautifier"
.
От Bootstrap 5.2.0 всички компоненти поддържат експериментален резервиран атрибут на данни, data-bs-config
който може да съдържа проста конфигурация на компонент като JSON низ. Когато даден елемент има атрибути data-bs-config='{"delay":0, "title":123}'
и data-bs-title="456"
, крайната title
стойност ще бъде 456
и отделните атрибути на данни ще заменят стойностите, дадени на data-bs-config
. В допълнение, съществуващите атрибути на данни могат да съдържат JSON стойности като data-bs-delay='{"show":0,"hide":150}'
.
Име | Тип | По подразбиране | Описание |
---|---|---|---|
interval |
номер | 5000 |
Времето за забавяне между автоматичното циклиране на елемент. |
keyboard |
булево | true |
Дали въртележката трябва да реагира на събития от клавиатурата. |
pause |
низ, булев | "hover" |
Ако е зададено на "hover" , поставя на пауза въртенето на въртележката на mouseenter и възобновява въртенето на въртележката на mouseleave . Ако е зададено на false , задържането на курсора на мишката върху въртележката няма да я постави на пауза. На устройства със сензорен екран, когато е настроено на "hover" , цикълът ще спре touchend (след като потребителят приключи взаимодействието с въртележката) за два интервала, преди автоматично да се поднови. Това е в допълнение към поведението на мишката. |
ride |
низ, булев | false |
Ако е зададено на true , въртележката се пуска автоматично, след като потребителят ръчно премине първия елемент. Ако е зададено на "carousel" , въртележката се пуска автоматично при зареждане. |
touch |
булево | true |
Дали въртележката трябва да поддържа взаимодействия с плъзгане наляво/надясно на устройства със сензорен екран. |
wrap |
булево | true |
Дали въртележката трябва да се върти непрекъснато или да има трудни спирания. |
Методи
Асинхронни методи и преходи
Всички API методи са асинхронни и стартират преход . Те се връщат при повикващия веднага щом преходът започне, но преди да приключи . В допълнение, извикване на метод на преходен компонент ще бъде игнорирано .
Можете да създадете екземпляр на въртележка с конструктора на въртележка, например, за да инициализирате с допълнителни опции и да започнете да преминавате през елементи:
const myCarouselElement = document.querySelector('#myCarousel')
const carousel = new bootstrap.Carousel(myCarouselElement, {
interval: 2000,
wrap: false
})
Метод | Описание |
---|---|
cycle |
Преминава през елементите на въртележката отляво надясно. |
dispose |
Унищожава въртележката на елемент. (Премахва съхранените данни в DOM елемента) |
getInstance |
Статичен метод, който ви позволява да получите екземпляра на въртележката, свързан с DOM елемент, можете да го използвате по следния начин: bootstrap.Carousel.getInstance(element) . |
getOrCreateInstance |
Статичен метод, който връща екземпляр на въртележка, свързан с DOM елемент, или създава нов, в случай че не е инициализиран. Можете да го използвате така: bootstrap.Carousel.getOrCreateInstance(element) . |
next |
Преминава към следващия елемент. Връща се към повикващия, преди да бъде показан следващият елемент (напр. преди да slid.bs.carousel настъпи събитието). |
nextWhenVisible |
Не превключвайте на следващата въртележка, когато страницата не се вижда или въртележката или нейният родител не се виждат. Връща се към повикващия, преди целевият елемент да бъде показан . |
pause |
Спира въртележката да се движи през елементи. |
prev |
Цикли към предишния елемент. Връща се към повикващия, преди да бъде показан предишният елемент (напр. преди да slid.bs.carousel се случи събитието). |
to |
Цикълира въртележката до конкретен кадър (базиран на 0, подобно на масив). Връща се към повикващия, преди целевият елемент да бъде показан (напр. преди да slid.bs.carousel се случи събитието). |
събития
Carousel класът на Bootstrap разкрива две събития за свързване към функционалността на въртележката. И двете събития имат следните допълнителни свойства:
direction
: Посоката, в която се плъзга въртележката ("left"
или"right"
).relatedTarget
: DOM елементът, който се плъзга на място като активен елемент.from
: Индексът на текущия елементto
: Индексът на следващия елемент
Всички каруселни събития се задействат в самата въртележка (т.е. в <div class="carousel">
).
Тип събитие | Описание |
---|---|
slid.bs.carousel |
Задейства се, когато въртележката завърши прехода си към слайд. |
slide.bs.carousel |
Задейства се незабавно, когато slide се извика методът на екземпляра. |
const myCarousel = document.getElementById('myCarousel')
myCarousel.addEventListener('slide.bs.carousel', event => {
// do something...
})