เครื่องมือสร้าง 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 หากงานเสร็จก่อน วิธีนี้ป้องกันการกะพริบเมื่อตอบสนองเร็ว โดยไม่ซ่อนความล่าช้าที่เกิดขึ้นจริง
เครื่องมือที่เกี่ยวข้อง
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
เครื่องสุ่มที่อยู่
สร้างระเบียนคล้ายที่อยู่ 1–20 รายการสำหรับแบบจำลองและการทดสอบ ด้วยรูปแบบประเทศแบบย่อ
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
ตัวสร้างลูกศร CSS
สร้างลูกศร CSS ในเบราว์เซอร์ด้วยทิศทาง สี ขนาด และความหนาของเส้นขอบ แล้วคัดลอกกฎ.
ตัวตรวจสอบความถูกต้องของ JSON
ตรวจสอบไวยากรณ์ JSON และตรวจจับเครื่องหมายจุลภาคต่อท้าย เครื่องหมายอัญประกาศที่ผิด คีย์ซ้ำ และโครงสร้างที่ผิดรูปแบบ พร้อมระบุตำแหน่งข้อผิดพลาดอย่างแม่นยำ
เครื่องมือนี้มีให้บริการในภาษาอื่น
- CSS 로딩 애니메이션 생성기 [KO]
- CSS-laddningsgenerator [SV]
- CSS-loadergenerator [NL]
- Generator loaderów CSS [PL]
- CSS-Loader-Generator [DE]
- Generador de Cargadores CSS [ES]
- Generator Loader CSS [ID]
- مولّد مؤشرات التحميل بلغة CSS [AR]
- Générateur de chargeur CSS [FR]
- CSSローディングアニメーション生成ツール [JA]
- Gerador de Loader CSS [PT]
- Trình tạo CSS Loader [VI]
- CSS Loader Generator [EN]
- Generatore di Loader CSS [IT]
- Генератор CSS-загрузчиков [RU]
- CSS Yükleyici Oluşturucu [TR]
- CSS 加载动画生成器 [ZH]