เครื่องสร้างแถบเลื่อน CSS
แถบเลื่อนแบบกำหนดเองเคยเป็นฝันร้ายของพสูโดอิลิเมนต์ที่ต้องใส่คำนำหน้าตามผู้ผลิต แต่ปัจจุบัน scrollbar-color และ scrollbar-width รองรับกรณีทั่วไปในเบราว์เซอร์สมัยใหม่ทั้งหมด ทั้งความกว้างแบบแคบหรือแบบปกติ และธีมสองสี (ตัวเลื่อนและราง) สำหรับการควบคุมระดับพิกเซล (ระยะขอบภายในของราง รัศมีของตัวเลื่อน สถานะเมื่อชี้เมาส์) พสูโดอิลิเมนต์รุ่นเก่าอย่าง ::-webkit-scrollbar ยังใช้งานได้ใน Chrome และ Safari เครื่องมือนี้จะสร้างทั้งสองแบบและจัดลำดับการซ้อน (cascade) ให้ถูกต้อง
วิธีจัดรูปแบบแถบเลื่อน
-
1
เลือกความกว้าง
auto (ความกว้างเริ่มต้นของแพลตฟอร์ม), thin (แคบกว่า) หรือค่าพิกเซลที่เจาะจงผ่านกฎของ webkit
-
2
ตั้งสีของตัวเลื่อนและราง
`scrollbar-color` แบบสมัยใหม่รับค่าสองสี ส่วนกฎของ webkit ให้กำหนดสี รัศมี และสถานะเมื่อชี้เมาส์แยกกันได้
-
3
เพิ่มเอฟเฟกต์เมื่อชี้เมาส์ (ไม่บังคับ)
ตัวเลื่อนจะสว่างขึ้นเมื่อชี้เมาส์ ทำงานผ่าน `::-webkit-scrollbar-thumb:hover`
-
4
กำหนดขอบเขต
ใช้กับ `html` / `body` (ทั้งหน้า) หรือใช้เฉพาะกับคอนเทนเนอร์ที่เลื่อนได้ตัวใดตัวหนึ่ง
-
5
คัดลอก CSS
กฎแบบสมัยใหม่ผสานกับ webkit: ทำงานได้ในทุกเบราว์เซอร์สมัยใหม่ พร้อมการรองรับสำรองที่ราบรื่น
คุณสมบัติมาตรฐานสมัยใหม่ (2023 เป็นต้นไป)
/* Applies to the element that scrolls */
html {
scrollbar-width: thin; /* auto | thin | none */
scrollbar-color: #4f46e5 #e5e7eb; /* thumb track */
}
การรองรับของเบราว์เซอร์ (2024):
scrollbar-width: Chrome 121+, Safari 18.2+, Firefox 64+scrollbar-color: Chrome 121+, Safari 18.2+, Firefox 64+scrollbar-gutter: stable: Chrome 94+, Safari 14+, Firefox 97+ จองพื้นที่ของแถบเลื่อนไว้แม้ในตอนที่ไม่จำเป็น จึงช่วยป้องกันการขยับของเลย์เอาต์
พสูโดอิลิเมนต์ของ webkit (Chrome, Safari, Edge รุ่นเก่า)
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-track {
background: #e5e7eb;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #4f46e5;
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: #3730a3;
}
ควบคุมได้ละเอียดยิ่งขึ้น width กำหนดความกว้างของแถบเลื่อนแนวตั้ง ส่วน height กำหนดความสูงของแถบเลื่อนแนวนอน ให้ใส่ทั้งสองค่าสำหรับคอนเทนเนอร์ที่เลื่อนได้ทั้งสองทิศทาง
จัดลำดับการซ้อนทั้งสองแนวทาง
ระบุกฎแบบสมัยใหม่ก่อน แล้วจึงใช้ webkit เป็นส่วนเสริมสำหรับเบราว์เซอร์ที่แสดงผลได้ทั้งสองแบบ:
.scroll-area {
scrollbar-width: thin;
scrollbar-color: #4f46e5 #e5e7eb;
}
.scroll-area::-webkit-scrollbar { width: 8px; }
.scroll-area::-webkit-scrollbar-track { background: #e5e7eb; }
.scroll-area::-webkit-scrollbar-thumb {
background: #4f46e5;
border-radius: 4px;
border: 2px solid #e5e7eb;
}
Firefox จะยึดตามกฎ scrollbar-* แบบสมัยใหม่เท่านั้น ส่วน Chrome และ Safari จะยึดตามกฎของ webkit (ซึ่งเขียนทับกฎแบบสมัยใหม่ พฤติกรรมจึงสอดคล้องกัน)
scrollbar-gutter ป้องกันการขยับของเนื้อหา
หากไม่มีการจองช่องไว้ เนื้อหาจะจัดเรียงใหม่เมื่อแถบเลื่อนปรากฏขึ้น (พบได้บ่อยในรายการแบบไดนามิก) วิธีแก้:
html { scrollbar-gutter: stable; }
/* or */
html { scrollbar-gutter: stable both-edges; }
ช่องของแถบเลื่อนจะถูกจองไว้ไม่ว่าเนื้อหาจะเลื่อนหรือไม่ก็ตาม both-edges จะเพิ่มช่องที่เท่ากันไว้อีกฝั่งหนึ่ง เพื่อให้เนื้อหาอยู่กึ่งกลางในเชิงสายตา
ซ่อนแถบเลื่อนทั้งหมด
.no-scrollbar {
scrollbar-width: none; /* Firefox */
}
.no-scrollbar::-webkit-scrollbar { display: none; } /* Chrome, Safari */
โปรดระวัง: การซ่อนแถบเลื่อนทำให้ผู้ใช้ไม่เห็นว่าเนื้อหาสามารถเลื่อนได้ ควรใช้เฉพาะเมื่อมีตัวบ่งชี้ที่ชัดเจน (ลูกศร จุดบอกหน้า) หรือเมื่อพฤติกรรมการเลื่อนชัดเจนจากบริบท (คารูเซลแนวนอน ประวัติการแชท)
ข้อควรพิจารณาสำหรับมือถือ
บน iOS และ Android แถบเลื่อนจะปรากฏเพียงชั่วครู่ระหว่างที่เลื่อน CSS แถบเลื่อนแบบกำหนดเองของคุณยังคงมีผล แต่ผู้ใช้อาจไม่เห็นมันนานเกินหนึ่งวินาที จงออกแบบให้เหมาะสม อย่าลงทุนมากเกินไปกับลูกเล่นทางสายตาที่แทบไม่ปรากฏ
การเข้าถึง
- ความต่างของสี: ตัวเลื่อนเทียบกับรางควรได้อัตราส่วน 3:1 สำหรับความต่างของสีที่ไม่ใช่ข้อความ (WCAG 1.4.11)
- ความกว้าง: แถบเลื่อนที่บางอาจจับด้วยเมาส์ได้ยาก โดยเฉพาะสำหรับผู้ใช้ที่มีข้อจำกัดด้านการเคลื่อนไหว ความกว้างปกติจึงเป็นค่าเริ่มต้นที่ปลอดภัยกว่า
- อย่าเอาแถบเลื่อนออก จากพื้นที่ที่เลื่อนได้โดยเด็ดขาด หากไม่มีวิธีเลื่อนแบบอื่นให้ ผู้ใช้ที่พึ่งพาแถบเลื่อนจะติดขัด
คำถามที่พบบ่อย
ได้ ด้วยคุณสมบัติสมัยใหม่ scrollbar-width และ scrollbar-color Firefox ไม่รองรับพสูโดอิลิเมนต์ของ webkit ดังนั้นเพื่อให้ได้รูปลักษณ์ที่สอดคล้องกันในทุกเบราว์เซอร์ ให้ใช้คุณสมบัติสมัยใหม่ก่อน แล้วเพิ่มกฎของ webkit เป็นส่วนเสริม
เพราะแถบเลื่อนเริ่มต้นจะซ้อนทับเนื้อหาและไม่จองพื้นที่ไว้จนกว่าจะจำเป็น ให้ตั้งค่า scrollbar-gutter: stable บนองค์ประกอบที่เลื่อนได้ เพื่อจองช่องไว้เสมอ ซึ่งจะป้องกันการจัดเรียงใหม่เมื่อแถบเลื่อนปรากฏหรือหายไป
โดยทั่วไปควรซ่อน เพราะแถบเลื่อนดูไม่เข้ากันและแย่งความสนใจกับเนื้อหา ให้เพิ่มจุดบอกหน้าหรือปุ่มลูกศรที่มองเห็นได้ เพื่อให้ผู้ใช้ยังรู้ว่าเนื้อหาเลื่อนได้ และให้ปฏิบัติตาม prefers-reduced-motion หากใช้การดูดเข้าตำแหน่งขณะเลื่อน (scroll-snapping)
มีได้ แถบเลื่อนที่บางมากหรือมีความต่างของสีต่ำจะใช้งานยากสำหรับผู้ใช้ที่มีข้อจำกัดด้านการเคลื่อนไหวและผู้ที่สายตาเลือนราง ควรรักษาความกว้างของแถบเลื่อนไว้อย่างน้อย 8–10 px เพื่อให้จับได้สะดวก และคงความต่างของสีระหว่างตัวเลื่อนกับรางไว้ที่ 3:1
เครื่องมือที่เกี่ยวข้อง
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
ตัวลดรูปพีชคณิตบูลีน
ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^
เครื่องสร้างตัวอักษรสุ่ม
สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน
เครื่องมือตรวจสอบหมายเลขโทรศัพท์
ตรวจสอบโครงสร้างหมายเลขตามประเทศ พร้อมดูภูมิภาค ประเภท และรูปแบบ E.164 ระหว่างประเทศ ในประเทศ และ RFC 3966