การนำทางและแท็บ
เอกสารประกอบและตัวอย่างสำหรับวิธีใช้ส่วนประกอบการนำทางที่รวมอยู่ใน Bootstrap
ระบบนำทางฐาน
การนำทางที่มีอยู่ใน Bootstrap จะแบ่งปันมาร์กอัปและสไตล์ทั่วไป ตั้งแต่.nav
คลาสพื้นฐานไปจนถึงสถานะใช้งานและปิดใช้งาน สลับคลาสตัวดัดแปลงเพื่อสลับไปมาระหว่า��แต่ละสไตล์
ส่วนประกอบ พื้นฐาน.nav
สร้างขึ้นด้วย flexbox และเป็นรากฐานที่แข็งแกร่งสำหรับการสร้างส่วนประกอบการนำทางทุกประเภท ประกอบด้วยการแทนที่รูปแบบบางส่วน (สำหรับการทำงานกับรายการ) ช่องว่างภายในลิงก์บางส่วนสำหรับพื้นที่ Hit ที่ใหญ่ขึ้น และรูปแบบการปิดใช้งานขั้นพื้นฐาน
ส่วนประกอบ พื้นฐาน.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>
เช่นด้านบน<ol>
หากลำดับของรายการของคุณมีความสำคัญหรือม้วนของคุณเองด้วย<nav>
องค์ประกอบ เนื่องจากการ.nav
ใช้display: flex
ลิงก์ nav จึงทำงานเหมือนกับรายการ nav แต่ไม่มีมาร์กอัปเพิ่มเติม
<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
องค์ประกอบด้วยตัวปรับแต่งและยูทิลิตี้ มิกซ์แอนด์แมทช์ได้ตามต้องการ หรือสร้างเองก็ได้
การจัดตำแหน่งแนวนอน
เปลี่ยนการจัดตำแหน่งแนวนอนของการนำทางด้วย ยูทิลิ ตี้flexbox ตามค่าเริ่มต้น navs จะจัดชิดซ้าย แต่คุณสามารถเปลี่ยนให้จัดกึ่งกลางหรือจัดชิดขวาได้อย่างง่ายดาย
ศูนย์กลางด้วย.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
ใช้.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 เพื่อจัดเตรียมแถบการนำทาง อย่าลืมเพิ่ม a role="navigation"
ลงในคอนเทนเนอร์หลักที่สมเหตุสมผลที่สุดของ<ul>
นั้น หรือ<nav>
ล้อมองค์ประกอบไว้รอบการนำทางทั้งหมด อย่าเพิ่มบทบาทให้กับ<ul>
ตัวเอง เนื่องจากจะทำให้ไม่สามารถประกาศเป็นรายการจริงโดยเทคโนโลยีอำนวยความสะดวก
โปรดทราบว่า ไม่ ควรกำหนด แถบนำทาง แม้ว่าจะกำหนดรูปแบบเป็นแท็บของ.nav-tabs
ชั้นเรียนก็ตามไม่ ควร กำหนดrole="tablist"
หรือแอตทริบิวต์ สิ่งเหล่านี้เหมาะสำหรับอินเทอร์เฟซแบบแท็บแบบไดนามิกเท่านั้น ตามที่อธิบายไว้ในWAI ARIA Authoring Practices ดูการทำงานของ JavaScriptสำหรับอินเทอร์เฟซแบบแท็บแบบไดนามิกในส่วนนี้สำหรับตัวอย่าง แอตทริบิวต์ไม่จำเป็นบนอินเทอร์เฟซแท็บแบบไดนามิกเนื่องจาก JavaScript ของเราจัดการสถานะที่เลือกโดยการเพิ่มในแท็บที่ใช้งานอยู่role="tab"
role="tabpanel"
aria-current
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>
ซาส
ตัวแปร
$nav-link-padding-y: .5rem;
$nav-link-padding-x: 1rem;
$nav-link-font-size: null;
$nav-link-font-weight: null;
$nav-link-color: $link-color;
$nav-link-hover-color: $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 ของแท็บ รวมเป็นทีละรายการหรือผ่านbootstrap.js
ไฟล์ที่คอมไพล์แล้ว เพื่อขยายแท็บการนำทางและยาเม็ด เพื่อสร้างบานหน้าต่างที่แท็บได้ของเนื้อหาในเครื่อง
อินเทอร์เฟซแบบแท็บแบบไดนามิก ตามที่อธิบายไว้ในแนวทางปฏิบัติการเขียนWAI ARIAต้องการrole="tablist"
, role="tab"
, role="tabpanel"
, และaria-
แอตทริบิวต์เพิ่มเติมเพื่อถ่ายทอดโครงสร้าง ฟังก์ชันการทำงาน และสถานะปัจจุบันแก่ผู้ใช้เทคโนโลยีอำนวยความสะดวก (เช่น โปรแกรมอ่านหน้าจอ) ตามแนวทางปฏิบัติที่ดีที่สุด เราขอแนะนำให้ใช้<button>
องค์ประกอบสำหรับแท็บ เนื่องจากตัวควบคุมเหล่านี้เป็นตัวควบคุมที่ทริกเกอร์การเปลี่ยนแปลงแบบไดนามิก แทนที่จะเป็นลิงก์ที่นำทางไปยังหน้าหรือตำแหน่งใหม่
โปรดทราบว่าอินเทอร์เฟซแบบแท็บแบบไดนามิกไม่ ควร มีเมนูดรอปดาวน์ เนื่องจากจะทำให้เกิดปัญหาในการใช้งานและการเข้าถึงได้ จากมุมมองการใช้งาน การที่องค์ประกอบทริกเกอร์ของแท็บที่แสดงอยู่ในปัจจุบันไม่สามารถมองเห็นได้ในทันที (เนื่องจากอยู่ภายในเมนูดรอปดาวน์แบบปิด) อาจทำให้เกิดความสับสน จากมุมมองการช่วยสำหรับการเข้าถึง ขณะนี้ยังไม่มีวิธีที่เหมาะสมในการแมปโครงสร้างประเภทนี้กับรูปแบบ WAI ARIA มาตรฐาน ซึ่งหมายความว่าผู้ใช้เทคโนโลยีอำนวยความสะดวกไม่สามารถเข้าใจได้ง่าย
นี่คือเนื้อหาที่พักบางส่วนในเนื้อหาที่เกี่ยวข้องของแท็บหน้าแรก การคลิกแท็บอื่นจะเป็นการสลับการมองเห็นของแท็บนี้ในครั้งต่อไป แท็บ 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.
<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="contact-tab" data-bs-toggle="tab" data-bs-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">Contact</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
<div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">...</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>
</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">...</div>
<div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab">...</div>
<div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab">...</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.
<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>
</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">...</div>
<div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab">...</div>
<div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab">...</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 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-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">...</div>
<div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab">...</div>
<div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab">...</div>
<div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab">...</div>
</div>
</div>
การใช้แอตทริบิวต์ข้อมูล
คุณสามารถเปิดใช้งานการนำทางแท็บหรือยาเม็ดโดยไม่ต้องเขียน 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">...</div>
<div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
<div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab">...</div>
<div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab">...</div>
</div>
ผ่านจาวาสคริปต์
เปิดใช้งานแท็บแบบแท็บได้ผ่าน JavaScript (ต้องเปิดใช้งานแต่ละแท็บแยกกัน):
var triggerTabList = [].slice.call(document.querySelectorAll('#myTab button'))
triggerTabList.forEach(function (triggerEl) {
var tabTrigger = new bootstrap.Tab(triggerEl)
triggerEl.addEventListener('click', function (event) {
event.preventDefault()
tabTrigger.show()
})
})
คุณสามารถเปิดใช้งานแต่ละแท็บได้หลายวิธี:
var triggerEl = document.querySelector('#myTab button[data-bs-target="#profile"]')
bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name
var 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">...</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
<div class="tab-pane fade" id="messages" role="tabpanel" aria-labelledby="messages-tab">...</div>
<div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab">...</div>
</div>
วิธีการ
วิธีการและการเปลี่ยนแบบอะซิงโครนัส
เมธอด API ทั้งหมดเป็นแบบอะซิงโครนัสและเริ่มต้นการเปลี่ยนแปลง พวกเขาจะกลับไปที่ผู้โทรทันทีที่เริ่มเปลี่ยน แต่ ก่อน ที่จะสิ้นสุด นอกจากนี้ การเรียกเมธอดบนคอมโพเนนต์การเปลี่ยนจะถูกละเว้น
constructor
เปิดใช้งานองค์ประกอบแท็บและคอนเทนเนอร์เนื้อหา แท็บควรมีแอตทริบิวต์ a data-bs-target
หรือ หากใช้ลิงก์ โดยhref
กำหนดเป้าหมายไปยังโหนดคอนเทนเนอร์ใน DOM
<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>
<div class="tab-content">
<div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab">...</div>
<div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab">...</div>
<div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab">...</div>
<div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab">...</div>
</div>
<script>
var firstTabEl = document.querySelector('#myTab li:last-child button')
var firstTab = new bootstrap.Tab(firstTabEl)
firstTab.show()
</script>
แสดง
เลือกแท็บที่กำหนดและแสดงบานหน้าต่างที่เกี่ยวข้อง แท็บอื่น ๆ ที่เลือกไว้ก่อนหน้านี้จะไม่ถูกเลือกและบานหน้าต่างที่เกี่ยวข้องจะถูกซ่อนไว้ กลับไปยังผู้โทรก่อนที่บานหน้าต่างแท็บจะแสดงขึ้นจริง (เช่น ก่อนที่shown.bs.tab
เหตุการณ์จะเกิดขึ้น)
var someTabTriggerEl = document.querySelector('#someTabTrigger')
var tab = new bootstrap.Tab(someTabTriggerEl)
tab.show()
ทิ้ง
ทำลายแท็บขององค์ประกอบ
รับอินสแตนซ์
วิธีการ แบบคงที่ซึ่งช่วยให้คุณได้รับอินสแตนซ์แท็บที่เกี่ยวข้องกับองค์ประกอบ DOM
var triggerEl = document.querySelector('#trigger')
var tab = bootstrap.Tab.getInstance(triggerEl) // Returns a Bootstrap tab instance
getOrCreateInstance
วิธีการ แบบคงที่ซึ่งช่วยให้คุณได้รับอินสแตนซ์แท็บที่เชื่อมโยงกับองค์ประกอบ DOM หรือสร้างใหม่ในกรณีที่ไม่ได้เริ่มต้น
var triggerEl = document.querySelector('#trigger')
var tab = bootstrap.Tab.getOrCreateInstance(triggerEl) // Returns a Bootstrap tab instance
เหตุการณ์
เมื่อแสดงแท็บใหม่ เหตุการณ์จะเริ่มขึ้นตามลำดับต่อไปนี้:
hide.bs.tab
(บนแท็บที่ใช้งานอยู่ในปัจจุบัน)show.bs.tab
(บนแท็บที่จะแสดง)hidden.bs.tab
(ในแท็บที่ใช้งานก่อนหน้านี้ อันเดียวกับhide.bs.tab
เหตุการณ์)shown.bs.tab
(บนแท็บเพิ่งแสดงที่เพิ่งเปิดใช้งาน อันเดียวกับshow.bs.tab
เหตุการณ์)
หากไม่มีแท็บใดเปิดใช้งานอยู่ เหตุการณ์ hide.bs.tab
และhidden.bs.tab
จะไม่เริ่มทำงาน
ประเภทงาน | คำอธิบาย |
---|---|
show.bs.tab |
เหตุการณ์นี้เริ่มทำงานในการแสดงแท็บ แต่ก่อนที่จะมีการแสดงแท็บใหม่ ใช้event.target และevent.relatedTarget เพื่อกำหนดเป้าหมายแท็บที่ใช้งานอยู่และแท็บที่ใช้งานอยู่ก่อนหน้า (ถ้ามี) ตามลำดับ |
shown.bs.tab |
เหตุการณ์นี้เริ่มทำงานในการแสดงแท็บหลังจากแสดงแท็บแล้ว ใช้event.target และevent.relatedTarget เพื่อกำหนดเป้าหมายแท็บที่ใช้งานอยู่และแท็บที่ใช้งานอยู่ก่อนหน้า (ถ้ามี) ตามลำดับ |
hide.bs.tab |
เหตุการณ์นี้เริ่มทำงานเมื่อมีการแสดงแท็บใหม่ (และทำให้แท็บที่ใช้งานอยู่ก่อนหน้านี้ถูกซ่อนไว้) ใช้event.target และevent.relatedTarget เพื่อกำหนดเป้าหมายแท็บที่ใช้งานอยู่ในปัจจุบันและแท็บใหม่ที่จะใช้งานเร็วๆ นี้ ตามลำดับ |
hidden.bs.tab |
เหตุการณ์นี้เริ่มทำงานหลังจากแสดงแท็บใหม่ (และทำให้แท็บที่ใช้งานอยู่ก่อนหน้านี้ถูกซ่อนไว้) ใช้event.target และevent.relatedTarget เพื่อกำหนดเป้าหมายแท็บที่ใช้งานอยู่ก่อนหน้าและแท็บใหม่ที่ใช้งานอยู่ตามลำดับ |
var tabEl = document.querySelector('button[data-bs-toggle="tab"]')
tabEl.addEventListener('shown.bs.tab', function (event) {
event.target // newly activated tab
event.relatedTarget // previous active tab
})