דלג לתוכן הראשי דלג לניווט במסמכים
Check
in English

ניווטים וכרטיסיות

תיעוד ודוגמאות לשימוש ברכיבי הניווט הכלולים של Bootstrap.

ניווט בסיס

ניווט זמין ב-Bootstrap חולק סימון וסגנונות כלליים, .navממעמד הבסיס ועד למצבים פעילים ומושבתים. החלף מחלקות שינוי כדי לעבור בין כל סגנון.

רכיב הבסיס .navבנוי עם flexbox ומספק בסיס חזק לבניית כל סוגי רכיבי הניווט. הוא כולל כמה דחיפות סגנון (לעבודה עם רשימות), כמה ריפוד קישורים לאזורי פגיעה גדולים יותר וסגנון נכים בסיסי.

רכיב הבסיס .navאינו כולל .activeמצב כלשהו. הדוגמאות הבאות כוללות את המחלקה, בעיקר כדי להדגים שהמחלקה הספציפית הזו אינה מפעילה שום סטיילינג מיוחד.

כדי להעביר את המצב הפעיל לטכנולוגיות מסייעות, השתמש aria-currentבתכונה - באמצעות pageהערך עבור הדף הנוכחי, או trueעבור הפריט הנוכחי בסט.

html
<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, קישורי הניווט מתנהגים כמו פריטי ניווט, אך ללא הסימון הנוסף.

html
<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:

html
<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:

html
<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).

html
<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.

html
<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 .

html
<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במקום זאת:

html
<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-items שלך, השתמש ב- .nav-fill. שימו לב שכל השטח האופקי תפוס, אבל לא לכל פריט ניווט יש אותו רוחב.

html
<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>אלמנטים עיצוביים.

html
<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לאמור לעיל, כל פריט ניווט יהיה באותו רוחב.

html
<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>ניווט מבוסס -.

html
<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 . אמנם יותר מילולי, כלי עזר אלה מציעים התאמה אישית גדולה יותר על פני נקודות עצירה רספונסיביות. בדוגמה שלמטה, הניווט שלנו יערם על נקודת השבירה הנמוכה ביותר, ואז יתאימו לפריסה אופקית שתמלא את הרוחב הזמין החל מנקודת השבירה הקטנה.

html
<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 הנפתחות .

כרטיסיות עם תפריטים נפתחים

html
<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>

גלולות עם תפריט נפתח

html
<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 אינו מבחין בין רשימות כרטיסיות אופקיות ואנכיות בכל הנוגע לאינטראקציות של מקשי הסמן: ללא קשר לכיוון רשימת הכרטיסיות, גם הסמן למעלה וגם השמאלי עוברים ללשונית הקודמת, והסמן למטה וימינה עוברים ל- הכרטיסייה הבאה.

באופן כללי, כדי להקל על הניווט במקלדת, מומלץ להפוך גם את לוחות הכרטיסיות עצמם לניתנים למיקוד, אלא אם הרכיב הראשון המכיל תוכן משמעותי בתוך חלונית הכרטיסיות כבר ניתן למיקוד. הפלאגין של JavaScript אינו מנסה להתמודד עם היבט זה - היכן שמתאים, תצטרך להפוך את לוחות הכרטיסיות שלך לניתנים למיקוד על ידי הוספת tabindex="0"הסימון שלך.
הפלאגין לשונית JavaScript אינו תומך בממשקי כרטיסיות המכילים תפריטים נפתחים, שכן אלו גורמים לבעיות שימושיות וגם לבעיות נגישות. מנקודת מבט של שימושיות, העובדה שאלמנט ההדק של הכרטיסייה המוצגת כעת אינו גלוי מיד (כיוון שהוא נמצא בתוך התפריט הנפתח הסגור) עלולה לגרום לבלבול. מנקודת מבט של נגישות, אין כרגע דרך הגיונית למפות סוג זה של מבנה לדפוס WAI ARIA סטנדרטי, כלומר, לא ניתן להפוך אותו בקלות להבנה למשתמשים בטכנולוגיות מסייעות.

שימוש בתכונות נתונים

אתה יכול להפעיל טאב או ניווט בגלולה מבלי לכתוב שום 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 הן אסינכרוניות ומתחילות מעבר . הם חוזרים למתקשר ברגע שהמעבר מתחיל אבל לפני שהוא מסתיים . בנוסף, תתעלם מקריאת שיטה על רכיב מעבר .

עיין בתיעוד JavaScript שלנו למידע נוסף .

מפעיל את התוכן שלך כרכיב כרטיסייה.

אתה יכול ליצור מופע כרטיסיות עם הבנאי, לדוגמה:

const bsTab = new bootstrap.Tab('#myTab')
שיטה תיאור
dispose הורס לשונית של אלמנט.
getInstance שיטה סטטית המאפשרת לך לקבל את מופע הכרטיסיות המשויך לרכיב DOM, אתה יכול להשתמש בה כך: bootstrap.Tab.getInstance(element).
getOrCreateInstance שיטה סטטית המחזירה מופע טאב המשויך לרכיב DOM או יצירת מופע חדש למקרה שהוא לא אותחל. אתה יכול להשתמש בו כך: bootstrap.Tab.getOrCreateInstance(element).
show בוחר את הכרטיסייה הנתונה ומציג את החלונית המשויכת לה. כל כרטיסייה אחרת שנבחרה בעבר תבוטל והחלונית המשויכת לה מוסתרת. חוזר אל המתקשר לפני שחלונית הכרטיסיות הוצגה בפועל (כלומר לפני shown.bs.tabהתרחשות האירוע).

אירועים

בעת הצגת כרטיסייה חדשה, האירועים יופעלו בסדר הבא:

  1. hide.bs.tab(בלשונית הפעילה הנוכחית)
  2. show.bs.tab(בלשונית להצגה)
  3. hidden.bs.tab(בלשונית הפעילה הקודמת, זהה לזה של hide.bs.tabהאירוע)
  4. 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
})