เบา
38.8 KB minified, 7.7 KB gzipped
Translation note (2026-04-30). v2.0.0 adds RTL support and a refreshed 2026 framework comparison. The English source is the canonical reference while these translations catch up. See https://skeletonic.io/about/ · https://skeletonic.io/components/ · https://skeletonic.io/benchmarks/.
ทุกตัวอย่างด้านล่าง เรนเดอร์ด้วยสไตล์ชีตเดียวกันที่กำลังสาธิต ไม่มี preprocessor ไม่มี JavaScript ไม่มี dependencies เพิ่ม คัดลอก สนิปเป็ตใดก็ได้ไปใส่ในไฟล์ HTML ใหม่แล้วใช้งานได้เลย
อิลิเมนต์แบบโต้ตอบที่ผู้เข้าชมคลิก แตะ หรือโฟกัสเพื่อควบคุมหน้า
ทริกเกอร์การกระทำที่เป็นเชิงความหมายและปรับธีมได้ ตัวแปรแบบทึบและ outline มีสีแบรนด์ให้เลือกหกสี
<a href="#" class="button primary">Primary</a>
<a href="#" class="button secondary">Secondary</a>
<a href="#" class="button tertiary">Tertiary</a>
ตัวแปร Outline:
<a href="#" class="button primary-outline">Outline</a>
<a href="#" class="button secondary-outline">Outline</a>
หมายเหตุการเข้าถึง ทุกตัวแปร
.buttonมาพร้อมวงแหวน:focus-visibleและ พื้นที่สัมผัสขั้นต่ำ 24×24 px (WCAG 2.2 SC 2.5.8) ใช้<button type="button">สำหรับ การกระทำในหน้า และ<a href>สำหรับการนำทางเท่านั้น
ป้ายขนาดกะทัดรัดสำหรับสถานะ จำนวน หรือหมวดหมู่ ขนาดตัวอักษร คงที่เพื่อให้ป้ายเรียงตัวกับข้อความรอบข้าง
<span class="badge">Default</span>
<span class="badge primary">Primary</span>
<span class="badge success">Success</span>
<span class="badge warning">Warning</span>
<span class="badge danger">Danger</span>
Default Primary Success Warning Danger
หมายเหตุการเข้าถึง ป้ายกำกับเป็นส่วนตกแต่งตามค่าเริ่มต้น เมื่อป้ายเป็นสัญญาณเดียว (เช่น จำนวนที่ยังไม่ได้อ่าน) ให้ครอบด้วย ตัวช่วยที่ซ่อนจากสายตา:
<span class="visually-hidden">3 ข้อความ ที่ยังไม่ได้อ่าน</span>
พื้นผิวที่แจ้งผู้เข้าชมว่ามีบางอย่างเกิดขึ้น — หรือกำลังจะเกิดขึ้น
ข้อความสถานะที่มีเจตนาเชิงความหมาย ใน v2.0.0 ทุกตัวแปรถูก
ตั้งชื่อ namespace อย่างชัดเจน ภายใต้ .alert-{primary,secondary,info,success,warning,error}
เพื่อให้คลาสตัวแปรไม่ชนกับคลาสสถานะอื่นในหน้า
<div class="alert alert-primary" role="alert">
<strong>โปรดทราบ</strong> นี่คือแจ้งเตือน primary
</div>
<div class="alert alert-success" role="status">
<strong>บันทึกแล้ว</strong> การเปลี่ยนแปลงของคุณถูกบันทึกแล้ว
</div>
<div class="alert alert-warning" role="alert">
<strong>ระวัง</strong> การกระทำนี้ส่งผลต่อสถานะที่ใช้ร่วมกัน
</div>
<div class="alert alert-error" role="alert">
<strong>ผิดพลาด</strong> ไม่สามารถบันทึกฟอร์มได้
</div>
หมายเหตุการเข้าถึง ใช้
role="alert"สำหรับข้อความที่ต้องการ ความสนใจทันที (ข้อผิดพลาด คำเตือน) และrole="status"สำหรับ การยืนยันที่ไม่เร่งด่วน ทั้งสองจะแสดงข้อความต่อเทคโนโลยีช่วยเหลือ ทันทีที่ปรากฏ
คอนเทนเนอร์ที่กรอบและจัดกลุ่มเนื้อหาที่เกี่ยวข้อง
คอนเทนเนอร์ที่มีขอบและ padding สำหรับหน่วยที่สอดคล้องกันเดียว ใช้คู่กับ
กริด flex-N สำหรับผนังการ์ดแบบ responsive
<section class="row">
<article class="card flex-1">
<div class="card-content">
<h3 class="card-title">เบา</h3>
<p>38.8 KB minified, 7.7 KB gzipped</p>
</div>
</article>
<article class="card flex-1">
<div class="card-content">
<h3 class="card-title">เข้าถึงได้</h3>
<p>รองรับ WCAG 2.2 ทันทีที่ใช้งาน</p>
</div>
</article>
<article class="card flex-1">
<div class="card-content">
<h3 class="card-title">เป็นโมดูล</h3>
<p>Cascade-layered สำหรับการ override ที่ง่าย</p>
</div>
</article>
</section>
38.8 KB minified, 7.7 KB gzipped
รองรับ WCAG 2.2 ทันทีที่ใช้งาน
Cascade-layered สำหรับการ override ที่ง่าย
หมายเหตุการเข้าถึง ครอบแต่ละการ์ดด้วย landmark เชิงความหมาย (
<article>,<section>) และเริ่มเนื้อหาด้วยหัวข้อ (<h3>) ผู้ใช้ screen reader จะสามารถนำทางรายการการ์ดเป็นส่วนที่เข้าถึงได้
อินพุต ป้ายชื่อ และการจัดกลุ่มสำหรับรวบรวมข้อมูลผู้ใช้
ป้ายชื่อ อินพุตข้อความ textarea fieldset และ legend — ทั้งหมดมี ขนาดสม่ำเสมอกับส่วนอื่นของระบบออกแบบ
<form>
<label for="name">ชื่อ</label>
<input id="name" type="text" required>
<label for="email">อีเมล</label>
<input id="email" type="email" required class="input-primary">
<label for="msg">ข้อความ</label>
<textarea id="msg" rows="4"></textarea>
<button type="submit" class="button primary">ส่ง</button>
</form>
หมายเหตุการเข้าถึง ทุกอินพุตต้องมี
<label for="…">ที่เชื่อมโยง ทางโปรแกรม จัดกลุ่มคอนโทรลที่เกี่ยวข้องภายใน<fieldset>พร้อม<legend>ทำเครื่องหมายฟิลด์ที่จำเป็นด้วยrequired(และเครื่องหมาย ดอกจันที่มองเห็นได้ในข้อความป้ายชื่อ)
โครงสร้างพื้นฐาน — กริด คอนเทนเนอร์ ส่วนหัว — ที่กำหนดกรอบ ทั้งหน้า
กริด flex-N แบบ responsive (1 → 12 คอลัมน์) สร้างบน flexbox
parent .row จัดช่องว่างและ wrap อัตโนมัติ
<div class="row">
<div class="flex-6">ครึ่ง</div>
<div class="flex-6">ครึ่ง</div>
</div>
<div class="row">
<div class="flex-4">หนึ่งส่วนสาม</div>
<div class="flex-4">หนึ่งส่วนสาม</div>
<div class="flex-4">หนึ่งส่วนสาม</div>
</div>
หมายเหตุการเข้าถึง ลำดับที่มองเห็นควรตรงกับลำดับ DOM หลีกเลี่ยง การเรียงลำดับแถวใหม่ด้วย
flex-direction: row-reverseหรือorder:— screen reader และผู้ใช้คีย์บอร์ดจะติดตามซอร์ส ไม่ใช่การแสดงผล
ส่วนหัวแบบ CSS-only ที่สมบูรณ์พร้อมปุ่มแฮมเบอร์เกอร์แบบ responsive
ไม่มี JavaScript คัดลอกสนิปเป็ตด้านล่างไปใส่ในหน้า HTML ที่
โหลด skeletonic.min.css แล้ว เมนูจะยุบ ขยาย และจัดการโฟกัสได้เอง
<style>
.sk-header{position:relative;display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;border:1px solid #e4e4e7;border-radius:.5rem;background:#fff;}
.sk-header .sk-brand{font-weight:600;color:#0a0a0a;text-decoration:none;}
.sk-header .sk-toggle{position:absolute;left:-9999px;}
.sk-header .sk-burger{display:none;margin-left:auto;cursor:pointer;padding:.625rem .75rem;border:1px solid #e4e4e7;border-radius:.375rem;font-size:1.125rem;line-height:1;min-width:2.75rem;min-height:2.75rem;}
.sk-header .sk-burger:focus-within,.sk-header .sk-toggle:focus-visible+.sk-burger{outline:2px solid hsl(210,100%,42%);outline-offset:2px;}
.sk-header .sk-menu{list-style:none;display:flex;gap:.25rem;margin:0 0 0 auto;padding:0;}
.sk-header .sk-menu a{display:inline-flex;align-items:center;min-height:2.75rem;padding:.5rem .875rem;border-radius:.375rem;color:#1a1a1a;text-decoration:none;}
.sk-header .sk-menu a:hover{background:#f4f4f5;}
@media (max-width:640px){
.sk-header .sk-burger{display:inline-flex;align-items:center;justify-content:center;}
.sk-header .sk-menu{display:none;flex-direction:column;gap:0;position:absolute;top:calc(100% + .25rem);left:0;right:0;background:#fff;border:1px solid #e4e4e7;border-radius:.5rem;padding:.375rem;box-shadow:0 4px 24px rgba(0,0,0,.08);z-index:10;}
.sk-header .sk-menu a{padding:.75rem 1rem;border-bottom:1px solid #f4f4f5;}
.sk-header .sk-menu li:last-child a{border-bottom:0;}
.sk-header .sk-toggle:checked ~ .sk-menu{display:flex;}
}
</style>
<header class="sk-header">
<a class="sk-brand" href="#">แบรนด์</a>
<input class="sk-toggle" id="sk-nav-toggle" type="checkbox" aria-label="สลับการนำทาง">
<label class="sk-burger" for="sk-nav-toggle" aria-hidden="true">☰</label>
<ul class="sk-menu">
<li><a href="#">หน้าแรก</a></li>
<li><a href="#">เอกสาร</a></li>
<li><a href="#">ส่วนประกอบ</a></li>
<li><a href="#">เกี่ยวกับ</a></li>
</ul>
</header>
หมายเหตุการเข้าถึง checkbox ที่ซ่อนอยู่ยังคงอยู่ในลำดับ tab เพื่อให้ผู้ใช้คีย์บอร์ดเปิดเมนูด้วย
SpaceหรือEnter<label>มีaria-hiddenเพราะ checkbox เองเป็นแหล่งชื่อ ที่เข้าถึงได้ ปรับขนาดหน้าต่างให้ต่ำกว่า 640 px เพื่อดูปุ่ม แฮมเบอร์เกอร์ทำงาน