เครื่องมือสร้าง CSS Loader

ถัดไป

สปินเนอร์ช่วยบอกผู้ใช้ว่ากำลังมีบางอย่างเกิดขึ้น เครื่องมือนี้สร้างสปินเนอร์วงกลมด้วย CSS เพียงแบบเดียว: กำหนดเส้นผ่านศูนย์กลาง ความหนาของขอบ สีเน้น และความเร็วรอบ ดูตัวอย่างสด แล้วคัดลอกโค้ด CSS ทั้งหมดเป็น CSS ล้วน ไม่มี SVG ไม่มี JavaScript และไม่มีไลบรารีภายนอก

วิธีใช้เครื่องมือ

  1. 1

    กำหนดขนาด

    เส้นผ่านศูนย์กลางของสปินเนอร์หน่วยพิกเซล 40–80 px เหมาะกับปุ่มและพื้นที่เนื้อหาส่วนใหญ่

  2. 2

    กำหนดความหนาของขอบ

    วงแหวนคือขอบที่วาดบนวงกลม ขอบที่หนาขึ้นทำให้ส่วนโค้งชัดเจนขึ้น ที่ 60 px ใช้ 4–8 px ก็ดูดี

  3. 3

    เลือกสี

    สีเน้นของส่วนโค้งที่หมุน ส่วนที่เหลือของวงแหวนจะคงเป็นสีเทาอ่อนเพื่อให้ส่วนโค้งเด่นขึ้น

  4. 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

เครื่องมือนี้มีให้บริการในภาษาอื่น