קרוסלה
רכיב מצגת לרכיבה על אופניים בין אלמנטים - תמונות או שקופיות של טקסט - כמו קרוסלה.
איך זה עובד
הקרוסלה היא מצגת לרכיבה על אופניים דרך סדרת תוכן, הבנויה עם טרנספורמציות תלת-ממדיות של CSS ומעט JavaScript. זה עובד עם סדרה של תמונות, טקסט או סימון מותאם אישית. זה כולל גם תמיכה בפקדים ומחוונים קודמים/הבאים.
בדפדפנים שבהם נתמך ה-Page Visibility 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 התרחשות האירוע). |
אירועים
כיתת הקרוסלה של 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...
})