เครื่องมือสร้าง CSS Loader
สปินเนอร์ช่วยบอกผู้ใช้ว่ากำลังมีบางอย่างเกิดขึ้น เครื่องมือนี้สร้างสปินเนอร์วงกลมด้วย CSS เพียงแบบเดียว: กำหนดเส้นผ่านศูนย์กลาง ความหนาของขอบ สีเน้น และความเร็วรอบ ดูตัวอย่างสด แล้วคัดลอกโค้ด CSS ทั้งหมดเป็น CSS ล้วน ไม่มี SVG ไม่มี JavaScript และไม่มีไลบรารีภายนอก
วิธีใช้เครื่องมือ
-
1
กำหนดขนาด
เส้นผ่านศูนย์กลางของสปินเนอร์หน่วยพิกเซล 40–80 px เหมาะกับปุ่มและพื้นที่เนื้อหาส่วนใหญ่
-
2
กำหนดความหนาของขอบ
วงแหวนคือขอบที่วาดบนวงกลม ขอบที่หนาขึ้นทำให้ส่วนโค้งชัดเจนขึ้น ที่ 60 px ใช้ 4–8 px ก็ดูดี
-
3
เลือกสี
สีเน้นของส่วนโค้งที่หมุน ส่วนที่เหลือของวงแหวนจะคงเป็นสีเทาอ่อนเพื่อให้ส่วนโค้งเด่นขึ้น
-
4
ตั้งความเร็วและคัดลอกโค้ด
เวลาหมุนครบหนึ่งรอบหน่วยวินาที ประมาณ 1 วินาทีคือจุดที่ลงตัวที่สุด ถ้าต่ำกว่า 500 มิลลิวินาทีจะดูรีบเร่ง และเกิน 2 วินาทีจะดูอืด
โค้ด CSS ที่สร้างขึ้นทำงานอย่างไร
.loader {
width: 60px;
height: 60px;
border: 6px solid #eee;
border-top-color: #10b981;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
สปินเนอร์คือวงกลมที่วาดด้วยขอบหนา กฎ border-top-color จะทาสีเฉพาะส่วนบนของวงแหวนด้วยสีเน้น ทำให้วงแหวนดูเหมือนส่วนโค้ง และกฎ @keyframes spin จะหมุนมันรอบจุดศูนย์กลาง การหมุนด้วย transform: rotate() ช่วยให้แอนิเมชันไม่หนัก เพราะเบราว์เซอร์ย้ายองค์ประกอบบนคอมโพสิเตอร์แทนที่จะวาดใหม่ทุกเฟรม
เมื่อต้องการแสดงบนหน้าเว็บ ให้เพิ่มองค์ประกอบหนึ่งตัวและโหลด CSS:
<div class="loader" role="status" aria-label="กำลังโหลด"></div>
ทำให้เข้าถึงได้
- เพิ่ม
role="status"เพื่อให้โปรแกรมอ่านหน้าจออ่านออกเสียงสปินเนอร์ - ตั้ง
aria-labelด้วยข้อความสถานะ เช่น “กำลังโหลด” - อย่าซ่อนเนื้อหาไว้หลังสปินเนอร์นานเกินไม่กี่วินาที โดยไม่มีกลไกสำรองเมื่อหมดเวลา
- เคารพ
prefers-reduced-motionสำหรับผู้ใช้ที่เลือกลดการเคลื่อนไหว ให้แทนการหมุนด้วยการค่อยๆ จางง่ายๆ หรือข้อความคงที่ว่า “กำลังโหลด…”
@media (prefers-reduced-motion: reduce) {
.loader { animation: none; background: currentColor; opacity: .4; }
}
ใช้สปินเนอร์เมื่อไร และใช้ UI แบบมองโลกในแง่ดีเมื่อไร
- ตอบสนองต่ำกว่า 100 มิลลิวินาที: ไม่ต้องใช้สปินเนอร์ ตาคนแทบไม่รับรู้ความล่าช้า
- 100 มิลลิวินาที – 1 วินาที: สปินเนอร์แบบบางเบา (วงกลมเล็ก, ข้อความปุ่มว่า “กำลังโหลด…”) ช่วยกันการคลิกซ้ำ
- 1 วินาที – 10 วินาที: ใช้สปินเนอร์ที่เห็นชัด และหากวัดผลได้ก็ควรแสดงความคืบหน้าด้วย
- > 10 วินาที: นี่ไม่ใช่ปัญหาของสปินเนอร์ ให้ไปหาว่าอะไรช้าแล้วแก้ให้ถูกจุด
สำหรับการส่งฟอร์มและการคลิกปุ่ม สปินเนอร์ที่อยู่ในตัวปุ่มมักจะดีกว่าการใช้เลเยอร์ครอบทั้งหน้า
คำถามที่พบบ่อย
ใช้ CSS สำหรับสปินเนอร์องค์ประกอบเดียวแบบเรียบง่าย (เทคนิคหมุนขอบสี่ด้าน) ส่วน SVG เหมาะเมื่อคุณต้องการหางที่ค่อยๆ เรียวลง, แอนิเมชัน stroke-dasharray หลายเส้น หรือส่วนที่เติมสีจนดูเหมือนรอยแปรง CSS เล็กและเรียบง่ายกว่า ส่วน SVG ยืดหยุ่นกว่า
น่าจะเป็นเพราะคุณกำลังหมุนองค์ประกอบขนาดใหญ่ หรือทำแอนิเมชันกับคุณสมบัติที่ไม่ถูกคอมโพสิต ควรให้สปินเนอร์มีขนาดเล็ก ใช้ transform: rotate() (ไม่ใช่ top/margin) และเลี่ยงการเรียกมันขณะที่มีแอนิเมชันหนักๆ อื่นทำงานอยู่
เกือบทั้งหมดหมุนตามเข็มนาฬิกา การหมุนทวนเข็มนาฬิกาจะให้ความรู้สึกผิดแปลกอยู่ลึกๆ เพราะสิ่งอ้างอิงการหมุนในชีวิตจริงส่วนใหญ่ (นาฬิกา, กังหันลม) ล้วนหมุนตามเข็มนาฬิกา ให้ยึดตามธรรมเนียมนี้ เว้นแต่คุณจะมีเหตุผลเฉพาะ
ใช้ setTimeout(..., 300) ใน JavaScript เพื่อเพิ่มคลาสของตัวโหลด และใช้ clearTimeout หากงานเสร็จก่อน วิธีนี้ป้องกันการกะพริบเมื่อตอบสนองเร็ว โดยไม่ซ่อนความล่าช้าที่เกิดขึ้นจริง
เครื่องมือที่เกี่ยวข้อง
ตารางอ้างอิง 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
เครื่องมือนี้มีให้บริการในภาษาอื่น
- CSS-laddningsgenerator [SV]
- Generator Loader CSS [ID]
- CSS Loader Generator [EN]
- CSSローディングアニメーション生成ツール [JA]
- Trình tạo CSS Loader [VI]
- Generador de Cargadores CSS [ES]
- CSS Yükleyici Oluşturucu [TR]
- CSS-Loader-Generator [DE]
- Générateur de chargeur CSS [FR]
- Gerador de Loader CSS [PT]
- CSS 加载动画生成器 [ZH]
- مولّد مؤشرات التحميل بلغة CSS [AR]
- CSS 로딩 애니메이션 생성기 [KO]
- CSS-loadergenerator [NL]
- Generator loaderów CSS [PL]
- Генератор CSS-загрузчиков [RU]
- Generatore di Loader CSS [IT]