Generator Loader CSS

Berikutnya

Spinner memberi tahu pengguna bahwa ada proses yang sedang berjalan. Generator ini membuat satu spinner lingkaran berbasis CSS: atur diameter, ketebalan border, warna aksen dan kecepatan rotasi, lihat pratinjau langsung, lalu salin CSS-nya. Semuanya CSS murni, tanpa SVG, tanpa JavaScript dan tanpa pustaka eksternal.

Cara menggunakan generator

  1. 1

    Atur ukuran

    Diameter spinner dalam piksel. 40-80 px cocok untuk sebagian besar tombol dan area konten.

  2. 2

    Atur ketebalan border

    Cincin adalah border yang digambar pada lingkaran. Border lebih tebal membuat busur lebih tegas; 4-8 px terlihat pas pada 60 px.

  3. 3

    Pilih warna

    Warna aksen pada busur yang berputar. Sisa cincin tetap abu-abu terang agar busurnya menonjol.

  4. 4

    Atur kecepatan dan salin CSS

    Waktu per putaran penuh dalam detik. Sekitar 1 detik adalah titik ideal yang umum; di bawah 500 ms terasa panik, di atas 2 detik terasa lamban.

Cara kerja CSS yang dihasilkan

.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); }
}

Spinner adalah lingkaran yang digambar dengan border tebal. Aturan border-top-color mewarnai hanya bagian atas cincin dengan warna aksen, sehingga cincin terlihat seperti busur, dan aturan @keyframes spin memutarnya di sekitar pusatnya. Memutar dengan transform: rotate() menjaga animasi tetap ringan, karena browser menggerakkan elemen di compositor, bukan menggambar ulang bingkai demi bingkai.

Untuk menampilkannya di halaman, tambahkan satu elemen dan muat CSS-nya:

<div class="loader" role="status" aria-label="Memuat"></div>

Buat agar mudah diakses

  • Tambahkan role="status" agar pembaca layar mengumumkan spinner.
  • Setel aria-label dengan teks status, misalnya “Memuat”.
  • Jangan sembunyikan konten di balik spinner lebih dari beberapa detik tanpa fallback timeout.
  • Hormati prefers-reduced-motion. Ganti animasi berputar dengan efek pudar sederhana atau teks statis “Memuat…” untuk pengguna yang menonaktifkan animasi:
@media (prefers-reduced-motion: reduce) {
  .loader { animation: none; background: currentColor; opacity: .4; }
}

Kapan memakai spinner, kapan memakai UI optimistis

  • Respons di bawah 100 ms: tidak perlu spinner; mata manusia hampir tidak merasakan jeda.
  • 100 ms – 1 detik: spinner halus (lingkaran kecil, teks tombol “Memuat…”) mencegah klik ganda.
  • 1 – 10 detik: spinner yang menonjol, idealnya dengan progres jika terukur.
  • > 10 detik: ini bukan masalah spinner; cari tahu apa yang lambat dan perbaiki.

Untuk submit form dan klik tombol, spinner di dalam tombol biasanya lebih baik daripada overlay seluruh halaman.

Pertanyaan yang Sering Diajukan

CSS untuk spinner elemen-tunggal sederhana (trik rotate empat border). SVG saat Anda butuh trail meruncing, beberapa animasi stroke dasharray, atau segmen terisi yang tampak seperti goresan cat. CSS lebih kecil dan sederhana; SVG lebih fleksibel.

Mungkin karena Anda memutar elemen besar atau menganimasikan properti yang tidak ter-composite. Jaga ukuran spinner kecil, gunakan transform: rotate() (bukan top/margin), dan hindari memicunya saat animasi berat lain berjalan.

Hampir universal searah jarum jam. Spinner berlawanan arah terasa janggal karena sebagian besar isyarat rotasi nyata (jam, kincir angin) searah jarum jam. Ikuti konvensi kecuali Anda punya alasan spesifik.

Dengan setTimeout(..., 300) di JavaScript yang menambah class loader, plus clearTimeout jika operasi selesai lebih dulu. Mencegah kedipan pada respons cepat tanpa menyembunyikan jeda nyata.

Alat Terkait