ניווטים וכרטיסיות
תיעוד ודוגמאות לשימוש ברכיבי הניווט הכלולים של Bootstrap.
ניווט בסיס
ניווט זמין ב-Bootstrap חולק סימון וסגנונות כלליים, .nav
ממעמד הבסיס ועד למצבים פעילים ומושבתים. החלף מחלקות שינוי כדי לעבור בין כל סגנון.
רכיב הבסיס .nav
בנוי עם flexbox ומספק בסיס חזק לבניית כל סוגי רכיבי הניווט. הוא כולל כמה דחיפות סגנון (לעבודה עם רשימות), כמה ריפוד קישורים לאזורי פגיעה גדולים יותר וסגנון נכים בסיסי.
רכיב הבסיס .nav
אינו כולל .active
מצב כלשהו. הדוגמאות הבאות כוללות את המחלקה, בעיקר כדי להדגים שהמחלקה הספציפית הזו אינה מפעילה שום סטיילינג מיוחד.
כדי להעביר את המצב הפעיל לטכנולוגיות מסייעות, השתמש aria-current
בתכונה - באמצעות page
הערך עבור הדף הנוכחי, או true
עבור הפריט הנוכחי בסט.
<ul class="nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
השיעורים משמשים לאורך כל הדרך, כך שהסימון שלך יכול להיות גמיש במיוחד. השתמש ב- <ul>
s כמו לעיל, <ol>
אם סדר הפריטים שלך חשוב, או גלגל משלך עם <nav>
אלמנט. בגלל .nav
השימושים display: flex
, קישורי הניווט מתנהגים כמו פריטי ניווט, אך ללא הסימון הנוסף.
<nav class="nav">
<a class="nav-link active" aria-current="page" href="#">Active</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled">Disabled</a>
</nav>
סגנונות זמינים
שנה את הסגנון של .nav
רכיב s עם מתקנים וכלי עזר. מערבבים ומתאימים לפי הצורך, או בנה משלך.
יישור אופקי
שנה את היישור האופקי של הניווט שלך עם כלי עזר flexbox . כברירת מחדל, ניווטים מיושרים לשמאל, אך ניתן לשנות אותם בקלות למרכז או לימין.
מרוכז עם .justify-content-center
:
<ul class="nav justify-content-center">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
מיושר לימין עם .justify-content-end
:
<ul class="nav justify-content-end">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
אֲנָכִי
ערמו את הניווט שלכם על ידי שינוי כיוון הפריט הגמיש עם .flex-column
כלי השירות. האם צריך לערום אותם בכמה נקודות מבט אבל לא באחרים? השתמש בגרסאות הרספונסיביות (למשל, .flex-sm-column
).
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
כמו תמיד, ניווט אנכי אפשרי <ul>
גם ללא s.
<nav class="nav flex-column">
<a class="nav-link active" aria-current="page" href="#">Active</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled">Disabled</a>
</nav>
כרטיסיות
לוקח את הניווט הבסיסי מלמעלה ומוסיף את .nav-tabs
המחלקה כדי ליצור ממשק עם כרטיסיות. השתמש בהם כדי ליצור אזורים הניתנים לכרטיסיות עם הפלאגין שלנו לכרטיסייה JavaScript .
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
גלולות
קח את אותו HTML, אבל השתמש .nav-pills
במקום זאת:
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
למלא ולהצדיק
הכריח את .nav
התוכן שלך להרחיב את מלוא הרוחב הזמין באחת משתי מחלקות שינוי. כדי למלא באופן פרופורציונלי את כל השטח הפנוי ב- .nav-item
s שלך, השתמש ב- .nav-fill
. שימו לב שכל השטח האופקי תפוס, אבל לא לכל פריט ניווט יש אותו רוחב.
<ul class="nav nav-pills nav-fill">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Much longer nav link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
בעת שימוש <nav>
בניווט מבוסס-, אתה יכול להשמיט בבטחה .nav-item
כפי .nav-link
שנדרש רק עבור <a>
אלמנטים עיצוביים.
<nav class="nav nav-pills nav-fill">
<a class="nav-link active" aria-current="page" href="#">Active</a>
<a class="nav-link" href="#">Much longer nav link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled">Disabled</a>
</nav>
עבור אלמנטים ברוחב שווה, השתמש .nav-justified
. כל המרחב האופקי יתפוס על ידי קישורי ניווט, אך בניגוד .nav-fill
לאמור לעיל, כל פריט ניווט יהיה באותו רוחב.
<ul class="nav nav-pills nav-justified">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Much longer nav link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
בדומה .nav-fill
לדוגמא באמצעות <nav>
ניווט מבוסס -.
<nav class="nav nav-pills nav-justified">
<a class="nav-link active" aria-current="page" href="#">Active</a>
<a class="nav-link" href="#">Much longer nav link</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled">Disabled</a>
</nav>
עבודה עם כלי עזר גמישים
אם אתה צריך וריאציות ניווט רספונסיביות, שקול להשתמש בסדרה של כלי שירות flexbox . אמנם יותר מילולי, כלי עזר אלה מציעים התאמה אישית גדולה יותר על פני נקודות עצירה רספונסיביות. בדוגמה שלמטה, הניווט שלנו יערם על נקודת השבירה הנמוכה ביותר, ואז יתאימו לפריסה אופקית שתמלא את הרוחב הזמין החל מנקודת השבירה הקטנה.
<nav class="nav nav-pills flex-column flex-sm-row">
<a class="flex-sm-fill text-sm-center nav-link active" aria-current="page" href="#">Active</a>
<a class="flex-sm-fill text-sm-center nav-link" href="#">Longer nav link</a>
<a class="flex-sm-fill text-sm-center nav-link" href="#">Link</a>
<a class="flex-sm-fill text-sm-center nav-link disabled">Disabled</a>
</nav>
לגבי נגישות
אם אתה משתמש ב-navs כדי לספק סרגל ניווט, הקפד להוסיף א role="navigation"
למיכל האב ההגיוני ביותר של ה- <ul>
, או לעטוף <nav>
אלמנט סביב כל הניווט. אל תוסיף את התפקיד <ul>
לעצמו, מכיוון שזה ימנע את הכרזתו כרשימה ממשית על ידי טכנולוגיות מסייעות.
שים לב שסרגלי ניווט, גם אם הם מעוצבים בצורה ויזואלית ככרטיסיות עם .nav-tabs
הכיתה, אין לתת role="tablist"
, role="tab"
או role="tabpanel"
תכונות. אלה מתאימים רק לממשקי כרטיסיות דינמיים, כמתואר בתבנית הכרטיסיות של מדריך שיטות הכתיבה של ARIA . ראה התנהגות JavaScript עבור ממשקים דינמיים עם כרטיסיות בסעיף זה לדוגמא. התכונה aria-current
אינה נחוצה בממשקי כרטיסיות דינמיים מכיוון שה-JavaScript שלנו מטפל במצב הנבחר על ידי הוספה aria-selected="true"
בכרטיסייה הפעילה.
שימוש בתפריטים נפתחים
הוסף תפריטים נפתחים עם מעט HTML נוסף ואת הפלאגין JavaScript הנפתחות .
כרטיסיות עם תפריטים נפתחים
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
<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>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
גלולות עם תפריט נפתח
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
<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>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled">Disabled</a>
</li>
</ul>
CSS
משתנים
נוסף בגרסה 5.2.0כחלק מגישת משתני ה-CSS המתפתחת של Bootstrap, ה-navs משתמשים כעת במשתני CSS מקומיים ב- .nav
, .nav-tabs
, .nav-pills
ועבור התאמה אישית משופרת בזמן אמת. ערכים עבור משתני ה-CSS נקבעים באמצעות Sass, כך שגם התאמה אישית של Sass עדיין נתמכת.
על .nav
מחלקת הבסיס:
--#{$prefix}nav-link-padding-x: #{$nav-link-padding-x};
--#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
@include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
--#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
--#{$prefix}nav-link-color: #{$nav-link-color};
--#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
--#{$prefix}nav-link-disabled-color: #{$nav-link-disabled-color};
על .nav-tabs
מחלקת השינוי:
--#{$prefix}nav-tabs-border-width: #{$nav-tabs-border-width};
--#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};
--#{$prefix}nav-tabs-border-radius: #{$nav-tabs-border-radius};
--#{$prefix}nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};
--#{$prefix}nav-tabs-link-active-color: #{$nav-tabs-link-active-color};
--#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};
--#{$prefix}nav-tabs-link-active-border-color: #{$nav-tabs-link-active-border-color};
על .nav-pills
מחלקת השינוי:
--#{$prefix}nav-pills-border-radius: #{$nav-pills-border-radius};
--#{$prefix}nav-pills-link-active-color: #{$nav-pills-link-active-color};
--#{$prefix}nav-pills-link-active-bg: #{$nav-pills-link-active-bg};
משתנים Sass
$nav-link-padding-y: .5rem;
$nav-link-padding-x: 1rem;
$nav-link-font-size: null;
$nav-link-font-weight: null;
$nav-link-color: var(--#{$prefix}link-color);
$nav-link-hover-color: var(--#{$prefix}link-hover-color);
$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out;
$nav-link-disabled-color: $gray-600;
$nav-tabs-border-color: $gray-300;
$nav-tabs-border-width: $border-width;
$nav-tabs-border-radius: $border-radius;
$nav-tabs-link-hover-border-color: $gray-200 $gray-200 $nav-tabs-border-color;
$nav-tabs-link-active-color: $gray-700;
$nav-tabs-link-active-bg: $body-bg;
$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg;
$nav-pills-border-radius: $border-radius;
$nav-pills-link-active-color: $component-active-color;
$nav-pills-link-active-bg: $component-active-bg;
התנהגות JavaScript
השתמש בתוסף ה-JavaScript הלשונית - כלול אותו בנפרד או דרך bootstrap.js
הקובץ המורכב - כדי להרחיב את כרטיסיות הניווט והגלולות שלנו ליצירת חלוניות ניתנות לכרטיסיות של תוכן מקומי.
זהו תוכן מציין מיקום כלשהו, התוכן המשויך לכרטיסיית הבית . לחיצה על כרטיסייה אחרת תחליף את החשיפה של כרטיסייה זו לכרטיסייה הבאה. הכרטיסייה JavaScript מחליפה שיעורים כדי לשלוט בנראות התוכן ובסגנון. אתה יכול להשתמש בו עם כרטיסיות, כדורים וכל .nav
ניווט מופעל אחר.
זהו תוכן מציין מיקום כלשהו, התוכן המשויך לכרטיסיית הפרופיל . לחיצה על כרטיסייה אחרת תחליף את החשיפה של כרטיסייה זו לכרטיסייה הבאה. הכרטיסייה JavaScript מחליפה שיעורים כדי לשלוט בנראות התוכן ובסגנון. אתה יכול להשתמש בו עם כרטיסיות, כדורים וכל .nav
ניווט מופעל אחר.
This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Disabled tab's associated content.
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home-tab-pane" type="button" role="tab" aria-controls="home-tab-pane" aria-selected="true">Home</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-tab-pane" type="button" role="tab" aria-controls="profile-tab-pane" aria-selected="false">Profile</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact-tab-pane" type="button" role="tab" aria-controls="contact-tab-pane" aria-selected="false">Contact</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="disabled-tab" data-bs-toggle="tab" data-bs-target="#disabled-tab-pane" type="button" role="tab" aria-controls="disabled-tab-pane" aria-selected="false" disabled>Disabled</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home-tab-pane" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="profile-tab-pane" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="contact-tab-pane" role="tabpanel" aria-labelledby="contact-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="disabled-tab-pane" role="tabpanel" aria-labelledby="disabled-tab" tabindex="0">...</div>
</div>
כדי לעזור להתאים לצרכים שלך, זה עובד עם <ul>
סימון מבוסס, כפי שמוצג לעיל, או עם כל סימון שרירותי של "גלגל משלך". שים לב שאם אתה משתמש ב- <nav>
, אל תוסיף role="tablist"
ישירות אליו, מכיוון שזה יעקוף את התפקיד המקורי של האלמנט כנקודת ציון לניווט. במקום זאת, עבור לאלמנט חלופי (בדוגמה למטה, פשוט <div>
) ועטוף <nav>
אותו.
<nav>
<div class="nav nav-tabs" id="nav-tab" role="tablist">
<button class="nav-link active" id="nav-home-tab" data-bs-toggle="tab" data-bs-target="#nav-home" type="button" role="tab" aria-controls="nav-home" aria-selected="true">Home</button>
<button class="nav-link" id="nav-profile-tab" data-bs-toggle="tab" data-bs-target="#nav-profile" type="button" role="tab" aria-controls="nav-profile" aria-selected="false">Profile</button>
<button class="nav-link" id="nav-contact-tab" data-bs-toggle="tab" data-bs-target="#nav-contact" type="button" role="tab" aria-controls="nav-contact" aria-selected="false">Contact</button>
<button class="nav-link" id="nav-disabled-tab" data-bs-toggle="tab" data-bs-target="#nav-disabled" type="button" role="tab" aria-controls="nav-disabled" aria-selected="false" disabled>Disabled</button>
</div>
</nav>
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="nav-disabled" role="tabpanel" aria-labelledby="nav-disabled-tab" tabindex="0">...</div>
</div>
תוסף הכרטיסיות עובד גם עם כדורים.
זהו תוכן מציין מיקום כלשהו, התוכן המשויך לכרטיסיית הבית . לחיצה על כרטיסייה אחרת תחליף את החשיפה של כרטיסייה זו לכרטיסייה הבאה. הכרטיסייה JavaScript מחליפה שיעורים כדי לשלוט בנראות התוכן ובסגנון. אתה יכול להשתמש בו עם כרטיסיות, כדורים וכל .nav
ניווט מופעל אחר.
This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Disabled tab's associated content.
<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="pills-home-tab" data-bs-toggle="pill" data-bs-target="#pills-home" type="button" role="tab" aria-controls="pills-home" aria-selected="true">Home</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-profile-tab" data-bs-toggle="pill" data-bs-target="#pills-profile" type="button" role="tab" aria-controls="pills-profile" aria-selected="false">Profile</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-contact-tab" data-bs-toggle="pill" data-bs-target="#pills-contact" type="button" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#pills-disabled" type="button" role="tab" aria-controls="pills-disabled" aria-selected="false" disabled>Disabled</button>
</li>
</ul>
<div class="tab-content" id="pills-tabContent">
<div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="pills-disabled" role="tabpanel" aria-labelledby="pills-disabled-tab" tabindex="0">...</div>
</div>
ועם כדורים אנכיים. באופן אידיאלי, עבור כרטיסיות אנכיות, עליך להוסיף גםaria-orientation="vertical"
למיכל רשימת הכרטיסיות.
זהו תוכן מציין מיקום כלשהו, התוכן המשויך לכרטיסיית הבית . לחיצה על כרטיסייה אחרת תחליף את החשיפה של כרטיסייה זו לכרטיסייה הבאה. הכרטיסייה JavaScript מחליפה שיעורים כדי לשלוט בנראות התוכן ובסגנון. אתה יכול להשתמש בו עם כרטיסיות, כדורים וכל .nav
ניווט מופעל אחר.
This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Disabled tab's associated content.
This is some placeholder content the Messages tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
This is some placeholder content the Settings tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav
-powered navigation.
<div class="d-flex align-items-start">
<div class="nav flex-column nav-pills me-3" id="v-pills-tab" role="tablist" aria-orientation="vertical">
<button class="nav-link active" id="v-pills-home-tab" data-bs-toggle="pill" data-bs-target="#v-pills-home" type="button" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</button>
<button class="nav-link" id="v-pills-profile-tab" data-bs-toggle="pill" data-bs-target="#v-pills-profile" type="button" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</button>
<button class="nav-link" id="v-pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#v-pills-disabled" type="button" role="tab" aria-controls="v-pills-disabled" aria-selected="false" disabled>Disabled</button>
<button class="nav-link" id="v-pills-messages-tab" data-bs-toggle="pill" data-bs-target="#v-pills-messages" type="button" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</button>
<button class="nav-link" id="v-pills-settings-tab" data-bs-toggle="pill" data-bs-target="#v-pills-settings" type="button" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</button>
</div>
<div class="tab-content" id="v-pills-tabContent">
<div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="v-pills-disabled" role="tabpanel" aria-labelledby="v-pills-disabled-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab" tabindex="0">...</div>
</div>
</div>
נְגִישׁוּת
ממשקים דינמיים עם כרטיסיות, כמתואר בדפוס הכרטיסיות של מדריך שיטות הכתיבה של ARIA , דורשים role="tablist"
, role="tab"
, ותכונות role="tabpanel"
נוספות aria-
על מנת להעביר את המבנה, הפונקציונליות והמצב הנוכחי שלהם למשתמשים בטכנולוגיות מסייעות (כגון קוראי מסך). כשיטת עבודה מומלצת, אנו ממליצים להשתמש<button>
באלמנטים עבור הכרטיסיות, מכיוון שמדובר בפקדים שמפעילים שינוי דינמי, במקום קישורים שמנווטים לדף או מיקום חדש.
בהתאם לתבנית ARIA Authoring Practices, רק הכרטיסייה הפעילה כרגע מקבלת מיקוד במקלדת. כאשר תוסף JavaScript מאותחל, הוא יוגדר tabindex="-1"
בכל פקדי הכרטיסייה הלא פעילים. ברגע שלכרטיסייה הפעילה הנוכחית יש פוקוס, מקשי הסמן מפעילים את הכרטיסייה הקודמת/הבאה, כאשר התוסף משנה את הסיבובtabindex
בהתאם. עם זאת, שימו לב שהתוסף של JavaScript אינו מבחין בין רשימות כרטיסיות אופקיות ואנכיות בכל הנוגע לאינטראקציות של מקשי הסמן: ללא קשר לכיוון רשימת הכרטיסיות, גם הסמן למעלה וגם השמאלי עוברים ללשונית הקודמת, והסמן למטה וימינה עוברים ל- הכרטיסייה הבאה.
tabindex="0"
הסימון שלך.
שימוש בתכונות נתונים
אתה יכול להפעיל טאב או ניווט בגלולה מבלי לכתוב שום JavaScript על ידי ציון data-bs-toggle="tab"
או data-bs-toggle="pill"
על אלמנט. השתמש בתכונות הנתונים האלה ב- .nav-tabs
או .nav-pills
.
<!-- Nav tabs -->
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profile</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="messages-tab" data-bs-toggle="tab" data-bs-target="#messages" type="button" role="tab" aria-controls="messages" aria-selected="false">Messages</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="settings-tab" data-bs-toggle="tab" data-bs-target="#settings" type="button" role="tab" aria-controls="settings" aria-selected="false">Settings</button>
</li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
<div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
<div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div>
<div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div>
</div>
דרך JavaScript
אפשר כרטיסיות הניתנות לכרטיסיות באמצעות JavaScript (יש להפעיל כל כרטיסייה בנפרד):
const triggerTabList = document.querySelectorAll('#myTab button')
triggerTabList.forEach(triggerEl => {
const tabTrigger = new bootstrap.Tab(triggerEl)
triggerEl.addEventListener('click', event => {
event.preventDefault()
tabTrigger.show()
})
})
אתה יכול להפעיל כרטיסיות בודדות בכמה דרכים:
const triggerEl = document.querySelector('#myTab button[data-bs-target="#profile"]')
bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name
const triggerFirstTabEl = document.querySelector('#myTab li:first-child button')
bootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab
אפקט דהייה
כדי לגרום לכרטיסיות לדעוך, הוסף .fade
לכל .tab-pane
. חלונית הכרטיסייה הראשונה חייבת גם .show
להפוך את התוכן הראשוני לגלוי.
<div class="tab-content">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div>
<div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div>
</div>
שיטות
שיטות ומעברים אסינכרוניים
כל שיטות ה-API הן אסינכרוניות ומתחילות מעבר . הם חוזרים למתקשר ברגע שהמעבר מתחיל אבל לפני שהוא מסתיים . בנוסף, תתעלם מקריאת שיטה על רכיב מעבר .
מפעיל את התוכן שלך כרכיב כרטיסייה.
אתה יכול ליצור מופע כרטיסיות עם הבנאי, לדוגמה:
const bsTab = new bootstrap.Tab('#myTab')
שיטה | תיאור |
---|---|
dispose |
הורס לשונית של אלמנט. |
getInstance |
שיטה סטטית המאפשרת לך לקבל את מופע הכרטיסיות המשויך לרכיב DOM, אתה יכול להשתמש בה כך: bootstrap.Tab.getInstance(element) . |
getOrCreateInstance |
שיטה סטטית המחזירה מופע טאב המשויך לרכיב DOM או יצירת מופע חדש למקרה שהוא לא אותחל. אתה יכול להשתמש בו כך: bootstrap.Tab.getOrCreateInstance(element) . |
show |
בוחר את הכרטיסייה הנתונה ומציג את החלונית המשויכת לה. כל כרטיסייה אחרת שנבחרה בעבר תבוטל והחלונית המשויכת לה מוסתרת. חוזר אל המתקשר לפני שחלונית הכרטיסיות הוצגה בפועל (כלומר לפני shown.bs.tab התרחשות האירוע). |
אירועים
בעת הצגת כרטיסייה חדשה, האירועים יופעלו בסדר הבא:
hide.bs.tab
(בלשונית הפעילה הנוכחית)show.bs.tab
(בלשונית להצגה)hidden.bs.tab
(בלשונית הפעילה הקודמת, זהה לזה שלhide.bs.tab
האירוע)shown.bs.tab
(בלשונית הפעילה שזה עתה הוצגה, זהה לזו שלshow.bs.tab
האירוע)
אם אף כרטיסייה לא הייתה פעילה, אז האירועים hide.bs.tab
ו- hidden.bs.tab
לא יופעלו.
סוג אירוע | תיאור |
---|---|
hide.bs.tab |
אירוע זה מופעל כאשר יש להציג כרטיסייה חדשה (ולכן יש להסתיר את הכרטיסייה הפעילה הקודמת). השתמש event.target ובכדי event.relatedTarget למקד לכרטיסייה הפעילה הנוכחית ולכרטיסייה החדשה שתהיה פעילה בקרוב, בהתאמה. |
hidden.bs.tab |
אירוע זה מופעל לאחר הצגת כרטיסייה חדשה (ולכן הכרטיסייה הפעילה הקודמת מוסתרת). השתמש event.target ובכדי event.relatedTarget למקד ללשונית הפעילה הקודמת ולכרטיסייה הפעילה החדשה, בהתאמה. |
show.bs.tab |
אירוע זה מופעל בהצגת כרטיסיות, אך לפני שהכרטיסייה החדשה הוצגה. השתמש event.target ובכדי event.relatedTarget למקד ללשונית הפעילה ולכרטיסייה הפעילה הקודמת (אם זמינה) בהתאמה. |
shown.bs.tab |
אירוע זה מופעל בהצגת כרטיסיות לאחר הצגת כרטיסייה. השתמש event.target ובכדי event.relatedTarget למקד ללשונית הפעילה ולכרטיסייה הפעילה הקודמת (אם זמינה) בהתאמה. |
const tabEl = document.querySelector('button[data-bs-toggle="tab"]')
tabEl.addEventListener('shown.bs.tab', event => {
event.target // newly activated tab
event.relatedTarget // previous active tab
})