Offcanvas
בנה סרגלי צד נסתרים בפרויקט שלך עבור ניווט, עגלות קניות ועוד עם כמה מחלקות ותוסף JavaScript שלנו.
איך זה עובד
Offcanvas הוא רכיב סרגל צד שניתן לשנות באמצעות JavaScript כדי להופיע מהקצה השמאלי, הימני, העליון או התחתון של נקודת התצוגה. כפתורים או עוגנים משמשים כטריגרים המחוברים לאלמנטים ספציפיים שאתה מחליף, data
ותכונות משמשות להפעלת JavaScript שלנו.
- Offcanvas חולק חלק מאותו קוד JavaScript כמו מודלים. מבחינה רעיונית, הם די דומים, אבל הם תוספים נפרדים.
- באופן דומה, כמה משתני Sass במקור עבור הסגנונות והממדים של offcanvas עוברים בירושה מהמשתנים של המודאל.
- כאשר מוצג, offcanvas כולל רקע ברירת מחדל שניתן ללחוץ עליו כדי להסתיר את offcanvas.
- בדומה למודלים, ניתן להציג רק offcanvas אחד בכל פעם.
שימו לב! בהתחשב באופן שבו CSS מטפל בהנפשות, אינך יכול להשתמש margin
או translate
על .offcanvas
אלמנט. במקום זאת, השתמש במחלקה כרכיב עטיפה עצמאי.
prefers-reduced-motion
בשאילתת המדיה. עיין
בסעיף תנועה מופחתת בתיעוד הנגישות שלנו .
דוגמאות
רכיבי Offcanvas
להלן דוגמה offcanvas שמוצגת כברירת מחדל (באמצעות .show
on .offcanvas
). Offcanvas כולל תמיכה בכותרת עם כפתור סגירה ומחלקת גוף אופציונלית לחלק ראשוני padding
. אנו ממליצים לכלול כותרות offcanvas עם פעולות דחייה במידת האפשר, או לספק פעולת דחייה מפורשת.
Offcanvas
<div class="offcanvas offcanvas-start show" tabindex="-1" id="offcanvas" aria-labelledby="offcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here.
</div>
</div>
דמו ישיר
השתמש בלחצנים למטה כדי להציג ולהסתיר אלמנט offcanvas באמצעות JavaScript שמעביר את .show
המחלקה לרכיב עם .offcanvas
המחלקה.
.offcanvas
מסתיר תוכן (ברירת מחדל).offcanvas.show
מציג תוכן
אתה יכול להשתמש בקישור עם href
התכונה, או בכפתור עם data-bs-target
התכונה. בשני המקרים, data-bs-toggle="offcanvas"
נדרש.
Offcanvas
<a class="btn btn-primary" data-bs-toggle="offcanvas" href="#offcanvasExample" role="button" aria-controls="offcanvasExample">
Link with href
</a>
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasExample" aria-controls="offcanvasExample">
Button with data-bs-target
</button>
<div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasExample" aria-labelledby="offcanvasExampleLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasExampleLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div>
Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
</div>
<div class="dropdown mt-3">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown">
Dropdown button
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
</div>
</div>
גלילה גוף
גלילה של <body>
האלמנט מושבתת כאשר offcanvas והרקע שלו גלויים. השתמש data-bs-scroll
בתכונה כדי לאפשר <body>
גלילה.
Offcanvas עם גלילה גוף
נסה לגלול את שאר העמוד כדי לראות אפשרות זו בפעולה.
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasScrolling" aria-controls="offcanvasScrolling">Enable body scrolling</button>
<div class="offcanvas offcanvas-start" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" id="offcanvasScrolling" aria-labelledby="offcanvasScrollingLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasScrollingLabel">Offcanvas with body scrolling</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>Try scrolling the rest of the page to see this option in action.</p>
</div>
</div>
גלילה גוף ותפאורה
אתה יכול גם לאפשר <body>
גלילה עם רקע גלוי.
רקע עם גלילה
נסה לגלול את שאר העמוד כדי לראות אפשרות זו בפעולה.
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasWithBothOptions" aria-controls="offcanvasWithBothOptions">Enable both scrolling & backdrop</button>
<div class="offcanvas offcanvas-start" data-bs-scroll="true" tabindex="-1" id="offcanvasWithBothOptions" aria-labelledby="offcanvasWithBothOptionsLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasWithBothOptionsLabel">Backdrop with scrolling</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>Try scrolling the rest of the page to see this option in action.</p>
</div>
</div>
רקע סטטי
כאשר רקע מוגדר לסטטי, ה-offcanvas לא ייסגר בעת לחיצה מחוצה לו.
Offcanvas
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#staticBackdrop" aria-controls="staticBackdrop">
Toggle static offcanvas
</button>
<div class="offcanvas offcanvas-start" data-bs-backdrop="static" tabindex="-1" id="staticBackdrop" aria-labelledby="staticBackdropLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="staticBackdropLabel">Offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<div>
I will not close if you click outside of me.
</div>
</div>
</div>
אוף קנבס כהה
נוסף בגרסה 5.2.0שנה את המראה של משטחי ציור עם כלי עזר כדי להתאים אותם טוב יותר להקשרים שונים כמו סרגלי ניווט כהים. כאן אנו מוסיפים .text-bg-dark
ל- .offcanvas
and .btn-close-white
לסטיילינג .btn-close
נכון עם offcanvas כהה. אם יש לך תפריטים נפתחים, שקול להוסיף גם .dropdown-menu-dark
ל- .dropdown-menu
.
Offcanvas
הצב תוכן offcanvas כאן.
<div class="offcanvas offcanvas-start show text-bg-dark" tabindex="-1" id="offcanvasDark" aria-labelledby="offcanvasDarkLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasDarkLabel">Offcanvas</h5>
<button type="button" class="btn-close btn-close-white" data-bs-dismiss="offcanvasDark" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p>Place offcanvas content here.</p>
</div>
</div>
תגובה
נוסף בגרסה 5.2.0שיעורים רספונסיביים מחוץ לקנבס מסתירות תוכן מחוץ לנקודת התצוגה מנקודת שבירה מוגדרת ומטה. מעל לנקודת שבירה זו, התוכן בפנים יתנהג כרגיל. לדוגמה, .offcanvas-lg
מסתיר תוכן ב-offcanvas מתחת לנקודת lg
הפסקה, אך מציג את התוכן מעל lg
נקודת הפסיקה.
רספונסיבי מחוץ לקנבס
זהו תוכן בתוך .offcanvas-lg
.
<button class="btn btn-primary d-lg-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasResponsive" aria-controls="offcanvasResponsive">Toggle offcanvas</button>
<div class="alert alert-info d-none d-lg-block">Resize your browser to show the responsive offcanvas toggle.</div>
<div class="offcanvas-lg offcanvas-end" tabindex="-1" id="offcanvasResponsive" aria-labelledby="offcanvasResponsiveLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasResponsiveLabel">Responsive offcanvas</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#offcanvasResponsive" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<p class="mb-0">This is content within an <code>.offcanvas-lg</code>.</p>
</div>
</div>
שיעורי אוף-קנבס רספונסיביים זמינים בכל נקודת שבירה.
.offcanvas
.offcanvas-sm
.offcanvas-md
.offcanvas-lg
.offcanvas-xl
.offcanvas-xxl
מיקום
אין מיקום ברירת מחדל עבור רכיבי offcanvas, אז עליך להוסיף אחת ממחלקות השינוי שלהלן.
.offcanvas-start
ממקמת offcanvas בצד שמאל של יציאת התצוגה (מוצג למעלה).offcanvas-end
ממקמת offcanvas בצד ימין של נקודת התצוגה.offcanvas-top
ממקמת offcanvas בחלק העליון של יציאת התצוגה.offcanvas-bottom
ממקם offcanvas בתחתית יציאת התצוגה
נסה את הדוגמאות העליונות, הימניות והתחתונות למטה.
חלק עליון אוף קנבס
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasTop" aria-controls="offcanvasTop">Toggle top offcanvas</button>
<div class="offcanvas offcanvas-top" tabindex="-1" id="offcanvasTop" aria-labelledby="offcanvasTopLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasTopLabel">Offcanvas top</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
...
</div>
</div>
Offcanvas נכון
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">Toggle right offcanvas</button>
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasRightLabel">Offcanvas right</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
...
</div>
</div>
תחתית offcanvas
<button class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasBottom" aria-controls="offcanvasBottom">Toggle bottom offcanvas</button>
<div class="offcanvas offcanvas-bottom" tabindex="-1" id="offcanvasBottom" aria-labelledby="offcanvasBottomLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasBottomLabel">Offcanvas bottom</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body small">
...
</div>
</div>
נְגִישׁוּת
מכיוון שהחלונית offcanvas היא קונספטואלית דו-שיח מודאלי, הקפד להוסיף aria-labelledby="..."
- בהתייחסות לכותרת offcanvas - ל .offcanvas
. שים לב שאינך צריך להוסיף role="dialog"
מכיוון שכבר הוספנו אותו באמצעות JavaScript.
CSS
משתנים
נוסף בגרסה 5.2.0כחלק מגישת משתני ה-CSS המתפתחת של Bootstrap, offcanvas משתמש כעת במשתני CSS מקומיים .offcanvas
עבור התאמה אישית משופרת בזמן אמת. ערכים עבור משתני ה-CSS נקבעים באמצעות Sass, כך שגם התאמה אישית של Sass עדיין נתמכת.
--#{$prefix}offcanvas-zindex: #{$zindex-offcanvas};
--#{$prefix}offcanvas-width: #{$offcanvas-horizontal-width};
--#{$prefix}offcanvas-height: #{$offcanvas-vertical-height};
--#{$prefix}offcanvas-padding-x: #{$offcanvas-padding-x};
--#{$prefix}offcanvas-padding-y: #{$offcanvas-padding-y};
--#{$prefix}offcanvas-color: #{$offcanvas-color};
--#{$prefix}offcanvas-bg: #{$offcanvas-bg-color};
--#{$prefix}offcanvas-border-width: #{$offcanvas-border-width};
--#{$prefix}offcanvas-border-color: #{$offcanvas-border-color};
--#{$prefix}offcanvas-box-shadow: #{$offcanvas-box-shadow};
משתנים Sass
$offcanvas-padding-y: $modal-inner-padding;
$offcanvas-padding-x: $modal-inner-padding;
$offcanvas-horizontal-width: 400px;
$offcanvas-vertical-height: 30vh;
$offcanvas-transition-duration: .3s;
$offcanvas-border-color: $modal-content-border-color;
$offcanvas-border-width: $modal-content-border-width;
$offcanvas-title-line-height: $modal-title-line-height;
$offcanvas-bg-color: $modal-content-bg;
$offcanvas-color: $modal-content-color;
$offcanvas-box-shadow: $modal-content-box-shadow-xs;
$offcanvas-backdrop-bg: $modal-backdrop-bg;
$offcanvas-backdrop-opacity: $modal-backdrop-opacity;
נוֹהָג
התוסף offcanvas משתמש בכמה מחלקות ותכונות כדי להתמודד עם ההרמה הכבדה:
.offcanvas
מסתיר את התוכן.offcanvas.show
מציג את התוכן.offcanvas-start
מסתיר את ה-offcanvas בצד שמאל.offcanvas-end
מסתיר את ה-offcanvas בצד ימין.offcanvas-top
מסתיר את ה-offcanvas בחלק העליון.offcanvas-bottom
מסתיר את ה-offcanvas בתחתית
הוסף לחצן ביטול עם data-bs-dismiss="offcanvas"
התכונה, שמפעיל את פונקציונליות JavaScript. הקפד להשתמש <button>
ברכיב איתו להתנהגות נאותה בכל המכשירים.
באמצעות תכונות נתונים
לְמַתֵג
הוסף data-bs-toggle="offcanvas"
ו- data-bs-target
או href
לאלמנט כדי להקצות אוטומטית שליטה על אלמנט אחד מחוץ לקנבס. התכונה data-bs-target
מקבלת בורר CSS להחיל עליו את ה-offcanvas. הקפד להוסיף את המחלקה offcanvas
לאלמנט offcanvas. אם תרצה שהיא תיפתח כברירת מחדל, הוסף את המחלקה הנוספת show
.
לשחרר
ניתן להשיג הדחה באמצעות data
התכונה על כפתור בתוך ה-offcanvas כפי שמוצג להלן:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
או על כפתור מחוץ ל-offcanvas באמצעות הלחצן data-bs-target
כפי שמודגם להלן:
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#my-offcanvas" aria-label="Close"></button>
דרך JavaScript
הפעל באופן ידני עם:
const offcanvasElementList = document.querySelectorAll('.offcanvas')
const offcanvasList = [...offcanvasElementList].map(offcanvasEl => new bootstrap.Offcanvas(offcanvasEl))
אפשרויות
מכיוון שניתן להעביר אפשרויות באמצעות תכונות נתונים או 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}'
.
שֵׁם | סוּג | בְּרִירַת מֶחדָל | תיאור |
---|---|---|---|
backdrop |
בוליאן או המחרוזתstatic |
true |
החל רקע על הגוף כאשר offcanvas פתוח. לחלופין, ציין static עבור רקע אשר אינו סוגר את offcanvas כאשר לוחצים עליו. |
keyboard |
בוליאני | true |
סוגר את ה-offcanvas כאשר מקש Escape נלחץ. |
scroll |
בוליאני | false |
אפשר גלילה לגוף בזמן שה-offcanvas פתוח. |
שיטות
שיטות ומעברים אסינכרוניים
כל שיטות ה-API הן אסינכרוניות ומתחילות מעבר . הם חוזרים למתקשר ברגע שהמעבר מתחיל אבל לפני שהוא מסתיים . בנוסף, תתעלם מקריאת שיטה על רכיב מעבר .
מפעיל את התוכן שלך כאלמנט offcanvas. מקבל אפשרויות אופציונליות object
.
אתה יכול ליצור מופע offcanvas עם הקונסטרוקטור, לדוגמה:
const bsOffcanvas = new bootstrap.Offcanvas('#myOffcanvas')
שיטה | תיאור |
---|---|
getInstance |
שיטה סטטית המאפשרת לך לקבל את המופע offcanvas המשויך לאלמנט DOM. |
getOrCreateInstance |
שיטה סטטית המאפשרת לך לקבל את המופע offcanvas המשויך לרכיב DOM, או ליצור אחד חדש למקרה שהוא לא אותחל. |
hide |
מסתיר אלמנט offcanvas. חוזר אל המתקשר לפני שהאלמנט offcanvas הוסתר בפועל (כלומר לפני hidden.bs.offcanvas שהאירוע מתרחש). |
show |
מציג אלמנט offcanvas. חוזר למתקשר לפני שהאלמנט offcanvas הוצג בפועל (כלומר לפני shown.bs.offcanvas שהאירוע מתרחש). |
toggle |
מחליף אלמנט offcanvas להצגה או מוסתר. חוזר אל המתקשר לפני שהאלמנט offcanvas הוצג או הוסתר בפועל (כלומר לפני שהאירוע shown.bs.offcanvas או hidden.bs.offcanvas מתרחש). |
אירועים
מחלקה offcanvas של Bootstrap חושפת כמה אירועים לחיבור לפונקציונליות offcanvas.
סוג אירוע | תיאור |
---|---|
hide.bs.offcanvas |
אירוע זה מופעל מיד כאשר hide השיטה נקראה. |
hidden.bs.offcanvas |
אירוע זה מופעל כאשר אלמנט offcanvas הוסתר מהמשתמש (יחכה לסיום מעברי CSS). |
hidePrevented.bs.offcanvas |
אירוע זה מופעל כאשר ה-offcanvas מוצג, הרקע שלו static ובוצע לחיצה מחוץ ל-offcanvas. האירוע מופעל גם כאשר מקש ה-Escape נלחץ keyboard והאפשרות מוגדרת ל- false . |
show.bs.offcanvas |
אירוע זה מופעל מיד כאשר show שיטת המופע נקראת. |
shown.bs.offcanvas |
אירוע זה מופעל כאשר אלמנט offcanvas נעשה גלוי למשתמש (יחכה לסיום מעברי CSS). |
const myOffcanvas = document.getElementById('myOffcanvas')
myOffcanvas.addEventListener('hidden.bs.offcanvas', event => {
// do something...
})