ตัวสร้างแท็บส์ CSS
แท็บมีอยู่ทั่วไปในหลายสถานที่ เช่น หน้าตั้งค่า เว็บไซต์เอกสาร และแกลเลอรีผลิตภัณฑ์ อย่างไรก็ตาม HTML แบบดั้งเดิมไม่มีองค์ประกอบแท็บเฉพาะตัว ทำให้นักพัฒนาต้องสร้างแท็บขึ้นมาเอง เครื่องมือนี้จะสร้างแถบแท็บอย่างง่ายด้วย HTML + CSS: สีเน้นสำหรับแท็บที่ใช้งานอยู่ รัศมีมุมโค้งของปุ่ม และสถานะเมื่อชี้เมาส์ วางโค้ดมาร์กอัปลงในโปรเจกต์ของคุณ แล้วเชื่อมต่อการสลับแท็บด้วย JavaScript ของคุณเอง
วิธีสร้างแท็บ
-
1
เลือกสีเน้น
สีพื้นหลังและสีข้อความของแท็บที่ใช้งานอยู่ เลือกสีที่เข้ากับแบรนด์ของคุณ
-
2
ตั้งรัศมีมุมโค้ง
ทำให้มุมบนของปุ่มแท็บโค้งมน ค่าที่สูงขึ้นให้ลุคที่นุ่มนวลขึ้น
-
3
แก้ไขป้ายชื่อ
ผลลัพธ์มีปุ่มสามปุ่ม ได้แก่ "Overview", "Details" และ "Settings" เปลี่ยนชื่อให้ตรงกับเนื้อหาของคุณ
-
4
คัดลอกโค้ด
โค้ดมาร์กอัปแท็บมาพร้อมบล็อก <style> ในตัว วางทั้งสองอย่างลงในหน้าเว็บของคุณ
-
5
เพิ่มการสลับแท็บ
เครื่องมือนี้สร้างเฉพาะส่วนที่มองเห็นเท่านั้น เชื่อมต่อปุ่มเข้ากับ JavaScript หรือไลบรารี UI ของคุณเองเพื่อแสดงและซ่อนแผงเนื้อหา
มาร์กอัปที่เข้าถึงได้อย่างถูกต้อง
<div class="tabs">
<div role="tablist" aria-label="Product info">
<button role="tab" id="tab-1" aria-selected="true" aria-controls="panel-1" tabindex="0">Overview</button>
<button role="tab" id="tab-2" aria-selected="false" aria-controls="panel-2" tabindex="-1">Specs</button>
<button role="tab" id="tab-3" aria-selected="false" aria-controls="panel-3" tabindex="-1">Reviews</button>
</div>
<section role="tabpanel" id="panel-1" aria-labelledby="tab-1">...</section>
<section role="tabpanel" id="panel-2" aria-labelledby="tab-2" hidden>...</section>
<section role="tabpanel" id="panel-3" aria-labelledby="tab-3" hidden>...</section>
</div>
คุณสมบัติสำคัญ:
role="tablist"ใช้ห่อปุ่มต่าง ๆ- ปุ่มแต่ละตัวมี
role="tab"พร้อมaria-selectedและaria-controls tabindexใช้รูปแบบ roving tabindex: มีเพียงแท็บที่กำลังทำงานเท่านั้นที่เป็น0ส่วนแท็บอื่น ๆ เป็น-1โดยปุ่มลูกศรจะเลื่อนโฟกัสระหว่างแท็บเหล่านี้- แต่ละแผงมี
role="tabpanel"โดยaria-labelledbyจะชี้ไปยังแท็บของมัน hiddenบนแผงที่ไม่ได้ใช้งาน (ไม่ใช่เพียงdisplay: noneเท่านั้น, เทคโนโลยีสิ่งอำนวยความสะดวกใช้แอตทริบิวต์นี้)
ข้อกำหนดการใช้คีย์บอร์ด
| ปุ่ม | การทำงาน |
|---|---|
| Tab | เข้า / ออกจากรายการแท็บ |
| ArrowLeft | แท็บก่อนหน้า (วนไปยังแท็บสุดท้าย) |
| ArrowRight | แท็บถัดไป (วนไปยังแท็บแรก) |
| Home | แท็บแรก |
| End | แท็บสุดท้าย |
| Enter / Space | เปิดใช้งานแท็บที่โฟกัสอยู่ (เมื่อเปิดใช้งานด้วยตนเอง) |
การเปิดใช้งานอัตโนมัติ (แท็บจะเปลี่ยนเมื่อโฟกัสเคลื่อนที่) เทียบกับการเปิดใช้งานด้วยตนเอง (เมื่อโฟกัสเคลื่อนที่ แท็บจะเปิดขึ้นเมื่อกด Enter), WAI-ARIA รองรับทั้งสองวิธี การใช้งานแบบอัตโนมัติเหมาะกว่าสำหรับผู้ใช้ที่มองเห็นได้ปกติ ในขณะที่การใช้งานแบบด้วยตนเองเหมาะสมกว่าเมื่อเนื้อหาในแท็บมีปริมาณมากและต้องแสดงผลอย่างละเอียด
สไตล์เส้นใต้
[role="tablist"] {
display: flex;
border-bottom: 1px solid #e5e7eb;
}
[role="tab"] {
padding: 0.75rem 1rem;
background: transparent;
border: 0;
color: #6b7280;
position: relative;
cursor: pointer;
}
[role="tab"][aria-selected="true"] {
color: #111827;
}
[role="tab"][aria-selected="true"]::after {
content: "";
position: absolute;
left: 1rem; right: 1rem; bottom: -1px;
height: 2px;
background: #2563eb;
}
สไตล์แคปซูล
[role="tab"] {
padding: 0.5rem 0.9rem;
border-radius: 9999px;
border: 0;
background: transparent;
}
[role="tab"][aria-selected="true"] {
background: #2563eb;
color: #fff;
}
โฟกัสที่มองเห็นได้
เมื่อโฟกัสมาจากคีย์บอร์ด ควรวาดวงแหวนโฟกัสเสมอ:
[role="tab"]:focus-visible {
outline: 2px solid #60a5fa;
outline-offset: 2px;
}
JavaScript
คร่าว ๆ:
const tabs = document.querySelectorAll('[role="tab"]');
tabs.forEach(tab => {
tab.addEventListener('click', () => activate(tab));
tab.addEventListener('keydown', e => {
const i = [...tabs].indexOf(tab);
if (e.key === 'ArrowRight') tabs[(i + 1) % tabs.length].focus();
if (e.key === 'ArrowLeft') tabs[(i - 1 + tabs.length) % tabs.length].focus();
if (e.key === 'Home') tabs[0].focus();
if (e.key === 'End') tabs[tabs.length - 1].focus();
});
});
function activate(tab) {
tabs.forEach(t => {
const panel = document.getElementById(t.getAttribute('aria-controls'));
const active = t === tab;
t.setAttribute('aria-selected', active);
t.setAttribute('tabindex', active ? '0' : '-1');
panel.hidden = !active;
});
tab.focus();
}
รวมทั้งหมด 30 บรรทัด ไม่มีการพึ่งพาไลบรารีใด ๆ
แท็บกับแอคคอร์เดียน
บนหน้าจอแคบ แถวแท็บจะดูอึดอัด รูปแบบที่พบบ่อยคือ: ใช้แท็บบนเดสก์ท็อป และใช้แอคคอร์เดียนบนมือถือ ควรใช้ container query หรือ media query เพื่อเปลี่ยนรูปแบบการแสดงผลโดยไม่ต้องเปลี่ยนบทบาท ARIA
คำถามที่พบบ่อย
สำหรับแท็บที่ใช้งานได้อย่างสะดวก ใช่ ในกรณีที่ไม่มีรหัส role="tablist" และ role="tab" โปรแกรมอ่านหน้าจอจะจัดการกับปุ่มเหล่านี้เหมือนปุ่มธรรมดา ส่งผลให้ผู้ใช้สูญเสียระบบการนำทางที่เป็นมาตรฐาน อีกทางเลือกคือการใช้รูปแบบปุ่มแบบแอคคอร์เดียนของ <details>/<summary> ซึ่งมีความหมายเฉพาะตัวถูกออกแบบไว้ล่วงหน้า
โหมดอัตโนมัติ (แท็บจะเปิดขึ้นเมื่อโฟกัสเคลื่อนที่) เหมาะสมสำหรับกรณีที่เนื้อหาในแต่ละแท็บไม่ซับซ้อนในการแสดงผล ส่วนโหมดแมนนวล (โฟกัสเคลื่อนที่ แล้วกด Enter เพื่อเปิดแท็บ) จะเหมาะสมกว่าเมื่อการสลับแท็บต้องใช้ทรัพยากรสูง เช่น การดึงข้อมูลหรือการแสดงผลแบบฟอร์มขนาดใหญ่
สำหรับแท็บที่มีเนื้อหา (เช่น แท็บเอกสารหรือแท็บผลิตภัณฑ์) ควรใช้แฮช (#specs) หรือพารามิเตอร์การค้นหา เพื่อให้ลิงก์สามารถนำไปยังแท็บเฉพาะได้อย่างแม่นยำ และแท็บที่กำลังใช้งานจะคงอยู่ต่อไปแม้หลังจากการรีโหลดหลายครั้ง ส่วนแท็บในส่วนอินเทอร์เฟซผู้ใช้ (เช่น แผงการตั้งค่า) ค่า URL เป็นตัวเลือก
ทำได้เฉพาะด้วยเทคนิค checkbox/radio เท่านั้น ซึ่งไม่มีการนำทางด้วยปุ่มลูกศรและขาดสถานะ ARIA แต่หากต้องการการใช้งานที่เข้าถึงได้อย่างแท้จริง โค้ด JS ขนาดเล็กนี้ก็คุ้มค่า หากต้องการทางเลือกสำรองที่เรนเดอร์ฝั่งเซิร์ฟเวอร์ ให้เชื่อมโยงแต่ละแท็บกับ URL เฉพาะ และเรนเดอร์แผงที่เกี่ยวข้องฝั่งเซิร์ฟเวอร์
เครื่องมือที่เกี่ยวข้อง
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
เครื่องสร้างตัวอักษรสุ่ม
สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน
ตัวลดรูปพีชคณิตบูลีน
ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^
เครื่องมือสร้าง EditorConfig
สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Générateur d'onglets CSS [FR]
- Generador de Pestañas CSS [ES]
- CSS标签生成器 [ZH]
- CSSタブジェネレーター [JA]
- CSS-flikgenerator [SV]
- Gerador de Abas CSS [PT]
- مولد علامات التبويب CSS [AR]
- CSS-Tabs-Generator [DE]
- CSS Tabs Generator [NL]
- CSS Tabs Generator [EN]
- Trình tạo tab CSS [VI]
- CSS 탭 생성기 [KO]
- Generator kart (tabs) CSS [PL]
- CSS Tab Generatörü [TR]
- Generator Tab CSS [ID]
- Generatore di schede CSS [IT]
- Генератор вкладок CSS [RU]