Navs
เอกสารประกอบและตัวอย่างสำหรับวิธีใช้ส่วนประกอบการนำทางที่รวมอยู่ใน Bootstrap
ระบบนำทางฐาน
การนำทางที่มีอยู่ใน Bootstrap จะแบ่งปันมาร์กอัปและสไตล์ทั่วไป ตั้งแต่.nav
คลาสพื้นฐานไปจนถึงสถานะใช้งานและปิดใช้งาน สลับคลาสตัวดัดแปลงเพื่อสลับไปมาระหว่างแต่ละสไตล์
ส่วนประกอบ พื้นฐาน.nav
สร้างขึ้นด้วย flexbox และเป็นรากฐานที่แข็งแกร่งสำหรับการสร้างส่วนประกอบการนำทางทุกประเภท ประกอบด้วยการแทนที่รูปแบบบางส่วน (สำหรับการทำงานกับรายการ) ช่องว่างภายในลิงก์บางส่วนสำหรับพื้นที่ Hit ที่ใหญ่ขึ้น และรูปแบบการปิดใช้งานขั้นพื้นฐาน
.nav
ไม่มี
.active
สถานะ ใดๆ ตัวอย่างต่อไปนี้รวมถึงคลาส ส่วนใหญ่เพื่อแสดงให้เห็นว่าคลาสนี้ไม่ทริกเกอร์สไตล์พิเศษใดๆ
<ul class="nav">
<li class="nav-item">
<a class="nav-link active" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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" 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"
หรือแอตทริบิวต์ สิ่งเหล่านี้เหมาะสำหรับอินเทอร์เฟซแบบแท็บแบบไดนามิกเท่านั้น ตามที่อธิบายไว้ใน รูปแบบแท็ บARIA Authoring Practices Guide ดูการทำงานของ JavaScriptสำหรับอินเทอร์เฟซแบบแท็บแบบไดนามิกในส่วนนี้สำหรับตัวอย่างrole="tab"
role="tabpanel"
การใช้ดรอปดาวน์
เพิ่มเมนูดรอปดาวน์ด้วย HTML เพิ่มเติมเล็กน้อยและปลั๊กอิน JavaScript แบบเลื่อนลง
แท็บที่มีดรอปดาวน์
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</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" href="#">Active</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</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>
พฤติกรรมจาวาสคริปต์
ใช้ปลั๊กอิน JavaScript ของแท็บ รวมเป็นทีละรายการหรือผ่านbootstrap.js
ไฟล์ที่คอมไพล์แล้ว เพื่อขยายแท็บการนำทางและยาเม็ด เพื่อสร้างบานหน้าต่างที่แท็บได้ของเนื้อหาในเครื่อง
หากคุณกำลังสร้าง JavaScript จากแหล่งที่มา มันต้องการutil.js
.
อินเทอร์เฟซแบบแท็บแบบไดนามิก ตามที่อธิบายไว้ในรูปแบบแท็บ ARIA Authoring Practices Guideต้องการrole="tablist"
, role="tab"
, role="tabpanel"
, และaria-
แอตทริบิวต์เพิ่มเติมเพื่อถ่ายทอดโครงสร้าง ฟังก์ชันการทำงาน และสถานะปัจจุบันแก่ผู้ใช้เทคโนโลยีอำนวยความสะดวก (เช่น โปรแกรมอ่านหน้าจอ) ตามแนวทางปฏิบัติที่ดีที่สุด เราขอแนะนำให้ใช้<button>
องค์ประกอบสำหรับแท็บ เนื่องจากตัวควบคุมเหล่านี้เป็นตัวควบคุมที่ทริกเกอร์การเปลี่ยนแปลงแบบไดนามิก แทนที่จะเป็นลิงก์ที่นำทางไปยังหน้าหรือตำแหน่งใหม่
เนื้อหาตัวยึดตำแหน่งสำหรับแผงแท็บ อันนี้เกี่ยวข้องกับแท็บหน้าแรก พาคุณไปไกลหลายไมล์ สูงมาก เพราะเธอมีรอยยิ้มแบบสากล มีคนแปลกหน้าอยู่บนเตียงของฉัน ฉันรู้สึกปวดหัว ไม่นะ. ในอีกชีวิตหนึ่งฉันจะทำให้คุณอยู่ เพราะฉัน ฉันทำได้ทุกอย่าง เตรียมพร้อมสำหรับการต่อสู้อันยอดเยี่ยมของฉัน ใช้เพื่อขโมยเหล้าของพ่อแม่แล้วปีนขึ้นไปบนหลังคา ปรับโทนสีผิวแทนให้พอดีและพร้อม เร่งขึ้นเพราะมันหนัก ความรักของเธอก็เหมือนยา ฉันเดาว่าฉันลืมไปว่าฉันมีทางเลือก
เนื้อหาตัวยึดตำแหน่งสำหรับแผงแท็บ อันนี้เกี่ยวข้องกับแท็บโปรไฟล์ คุณได้รับสถาปัตยกรรมที่ดีที่สุด แสตมป์พาสปอร์ต เธอเป็นสากล ดี สด ดุ เราได้ล็อคไว้ ไม่เคยวางแผนว่าวันหนึ่งฉันจะเสียคุณไป เธอกินหัวใจของคุณออก จูบของคุณคือจักรวาล ทุกการเคลื่อนไหวคือเวทย์มนตร์ ฉันหมายถึงพวกนั้น ฉันหมายถึงเหมือนเธอนั่นแหละ ทักทายคนที่รัก ไปเที่ยวกัน แค่เป็นเจ้าของคืนเหมือนวันที่ 4 กรกฎาคม! แต่คุณควรได้รับการสูญเสีย
Placeholder content for the tab panel. This one relates to the contact tab. Her love is like a drug. All my girls vintage Chanel baby. Got a motel and built a fort out of sheets. 'Cause she's the muse and the artist. (This is how we do) So you wanna play with magic. So just be sure before you give it all to me. I'm walking, I'm walking on air (tonight). Skip the talk, heard it all, time to walk the walk. Catch her if you can. Stinging like a bee I earned my stripes.
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-toggle="tab" data-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-toggle="tab" data-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-toggle="tab" data-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-toggle="tab" data-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-toggle="tab" data-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-toggle="tab" data-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>
ปลั๊กอินแท็บยังใช้งานได้กับยาเม็ด
เนื้อหาตัวยึดตำแหน่งสำหรับแผงแท็บ อันนี้เกี่ยวข้องกับแท็บหน้าแรก พาคุณไปไกลหลายไมล์ สูงมาก เพราะเธอมีรอยยิ้มแบบสากล มีคนแปลกหน้าอยู่บนเตียงของฉัน ฉันรู้สึกปวดหัว ไม่นะ. ในอีกชีวิตหนึ่งฉันจะทำให้คุณอยู่ เพราะฉัน ฉันทำได้ทุกอย่าง เตรียมพร้อมสำหรับการต่อสู้อันยอดเยี่ยมของฉัน ใช้เพื่อขโมยเหล้าของพ่อแม่แล้วปีนขึ้นไปบนหลังคา ปรับโทนสีผิวแทนให้พอดีและพร้อม เร่งขึ้นเพราะมันหนัก ความรักของเธอก็เหมือนยา ฉันเดาว่าฉันลืมไปว่าฉันมีทางเลือก
Placeholder content for the tab panel. This one relates to the profile tab. You got the finest architecture. Passport stamps, she's cosmopolitan. Fine, fresh, fierce, we got it on lock. Never planned that one day I'd be losing you. She eats your heart out. Your kiss is cosmic, every move is magic. I mean the ones, I mean like she's the one. Greetings loved ones let's take a journey. Just own the night like the 4th of July! But you'd rather get wasted.
Placeholder content for the tab panel. This one relates to the contact tab. Her love is like a drug. All my girls vintage Chanel baby. Got a motel and built a fort out of sheets. 'Cause she's the muse and the artist. (This is how we do) So you wanna play with magic. So just be sure before you give it all to me. I'm walking, I'm walking on air (tonight). Skip the talk, heard it all, time to walk the walk. Catch her if you can. Stinging like a bee I earned my stripes.
<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-toggle="pill" data-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-toggle="pill" data-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-toggle="pill" data-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>
และด้วยเม็ดยาแนวตั้ง
เนื้อหาตัวยึดตำแหน่งสำหรับแผงแท็บ อันนี้เกี่ยวข้องกับแท็บหน้าแรก เห็นคุณอยู่กลางเมืองร้องเพลงบลูส์ ดูคุณหมุนท่อระบายน้ำ ทำไมคุณไม่ให้ฉันหยุดโดย? หนักคือศีรษะที่สวมมงกุฎ ใช่ เราทำให้ทูตสวรรค์ร้องไห้ ฝนตกลงมาบนโลกจากเบื้องบน อยากดูการแสดงแบบ 3D หนัง คุณเคยรู้สึกบ้างไหมว่ารู้สึกบางกระดาษ มันใช่หรือไม่ใช่ ไม่ใช่เลย
Placeholder content for the tab panel. This one relates to the profile tab. Takes you miles high, so high, 'cause she’s got that one international smile. There's a stranger in my bed, there's a pounding in my head. Oh, no. In another life I would make you stay. ‘Cause I, I’m capable of anything. Suiting up for my crowning battle. Used to steal your parents' liquor and climb to the roof. Tone, tan fit and ready, turn it up cause its gettin' heavy. Her love is like a drug. I guess that I forgot I had a choice.
Placeholder content for the tab panel. This one relates to the messages tab. You got the finest architecture. Passport stamps, she's cosmopolitan. Fine, fresh, fierce, we got it on lock. Never planned that one day I'd be losing you. She eats your heart out. Your kiss is cosmic, every move is magic. I mean the ones, I mean like she's the one. Greetings loved ones let's take a journey. Just own the night like the 4th of July! But you'd rather get wasted.
Placeholder content for the tab panel. This one relates to the settings tab. Her love is like a drug. All my girls vintage Chanel baby. Got a motel and built a fort out of sheets. 'Cause she's the muse and the artist. (This is how we do) So you wanna play with magic. So just be sure before you give it all to me. I'm walking, I'm walking on air (tonight). Skip the talk, heard it all, time to walk the walk. Catch her if you can. Stinging like a bee I earned my stripes.
<div class="row">
<div class="col-3">
<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
<button class="nav-link active" id="v-pills-home-tab" data-toggle="pill" data-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-toggle="pill" data-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-toggle="pill" data-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-toggle="pill" data-target="#v-pills-settings" type="button" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</button>
</div>
</div>
<div class="col-9">
<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>
</div>
การใช้แอตทริบิวต์ข้อมูล
คุณสามารถเปิดใช้งานการนำทางแท็บหรือยาเม็ดโดยไม่ต้องเขียน JavaScript ใด ๆ โดยเพียงแค่ระบุdata-toggle="tab"
หรือdata-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-toggle="tab" data-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-toggle="tab" data-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-toggle="tab" data-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-toggle="tab" data-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 (ต้องเปิดใช้งานแต่ละแท็บแยกกัน):
$('#myTab button').on('click', function (event) {
event.preventDefault()
$(this).tab('show')
})
คุณสามารถเปิดใช้งานแต่ละแท็บได้หลายวิธี:
$('#myTab button[data-target="#profile"]').tab('show') // Select tab by name
$('#myTab li:first-child button').tab('show') // Select first tab
$('#myTab li:last-child button').tab('show') // Select last tab
$('#myTab li:nth-child(3) button').tab('show') // Select third 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 ทั้งหมดเป็นแบบอะซิงโครนัสและเริ่มต้นการเปลี่ยนแปลง พวกเขาจะกลับไปที่ผู้โทรทันทีที่เริ่มเปลี่ยน แต่ ก่อน ที่จะสิ้นสุด นอกจากนี้ การเรียกเมธอดบนคอมโพเนนต์การเปลี่ยนจะถูกละเว้น
$().tab
เปิดใช้งานองค์ประกอบแท็บและคอนเทนเนอร์เนื้อหา แท็บควรมี a data-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-toggle="tab" data-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-toggle="tab" data-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-toggle="tab" data-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-toggle="tab" data-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>
$(function () {
$('#myTab li:last-child button').tab('show')
})
</script>
.tab('แสดง')
เลือกแท็บที่กำหนดและแสดงบานหน้าต่างที่เกี่ยวข้อง แท็บอื่น ๆ ที่เลือกไว้ก่อนหน้านี้จะไม่ถูกเลือกและบานหน้าต่างที่เกี่ยวข้องจะถูกซ่อนไว้ กลับไปยังผู้โทรก่อนที่บานหน้าต่างแท็บจะแสดงขึ้นจริง (เช่น ก่อนที่shown.bs.tab
เหตุการณ์จะเกิดขึ้น)
$('#someTab').tab('show')
.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
จะไม่เริ่มทำงาน
ประเภทงาน | คำอธิบาย |
---|---|
show.bs.tab | เหตุการณ์นี้เริ่มทำงานในการแสดงแท็บ แต่ก่อนที่จะมีการแสดงแท็บใหม่ ใช้event.target และevent.relatedTarget เพื่อกำหนดเป้าหมายแท็บที่ใช้งานอยู่และแท็บที่ใช้งานอยู่ก่อนหน้า (ถ้ามี) ตามลำดับ |
แสดง.bs.tab | เหตุการณ์นี้เริ่มทำงานในการแสดงแท็บหลังจากแสดงแท็บแล้ว ใช้event.target และevent.relatedTarget เพื่อกำหนดเป้าหมายแท็บที่ใช้งานอยู่และแท็บที่ใช้งานอยู่ก่อนหน้า (ถ้ามี) ตามลำดับ |
hide.bs.tab | เหตุการณ์นี้เริ่มทำงานเมื่อมีการแสดงแท็บใหม่ (และทำให้แท็บที่ใช้งานอยู่ก่อนหน้านี้ถูกซ่อนไว้) ใช้event.target และevent.relatedTarget เพื่อกำหนดเป้าหมายแท็บที่ใช้งานอยู่ในปัจจุบันและแท็บใหม่ที่จะใช้งานเร็วๆ นี้ ตามลำดับ |
hidden.bs.tab | เหตุการณ์นี้เริ่มทำงานหลังจากแสดงแท็บใหม่ (และทำให้แท็บที่ใช้งานอยู่ก่อนหน้านี้ถูกซ่อนไว้) ใช้event.target และevent.relatedTarget เพื่อกำหนดเป้าหมายแท็บที่ใช้งานอยู่ก่อนหน้าและแท็บใหม่ที่ใช้งานอยู่ตามลำดับ |
$('button[data-toggle="tab"]').on('shown.bs.tab', function (event) {
event.target // newly activated tab
event.relatedTarget // previous active tab
})