مولّد مؤشرات التحميل بلغة CSS

التالي

الدوّار يخبر المستخدم بأن شيئًا ما يحدث. يولّد هذا المولّد دوّارًا دائريًا واحدًا بـ CSS: اضبط القطر وسماكة الحدود واللون المميّز وسرعة الدوران، وشاهد المعاينة المباشرة، ثم انسخ كود CSS. كل شيء بـ CSS خالص، بلا SVG وبلا JavaScript وبلا مكتبات خارجية.

كيفية استخدام المولّد

  1. 1

    اضبط الحجم

    قطر الدوّار بالبكسل. نطاق 40-80 بكسل يناسب معظم الأزرار ومناطق المحتوى.

  2. 2

    اضبط سماكة الحدود

    الحلقة هي حدود مرسومة على دائرة. الحدود الأسمك تجعل القوس أوضح؛ ويُفضَّل 4-8 بكسل عند قطر 60 بكسل.

  3. 3

    اختر اللون

    اللون المميّز للقوس الدوّار. يبقى باقي الحلقة رماديًا فاتحًا ليبرز القوس.

  4. 4

    اضبط السرعة وانسخ كود CSS

    مدة الدورة الكاملة بالثواني. ثانية واحدة تقريبًا هي النقطة المثالية الشائعة؛ أقل من 500 مللي ثانية يبدو محمومًا، وأكثر من ثانيتين يبدو بطيئًا.

كيف يعمل كود 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; }
}

متى تستخدم الدوّار ومتى تستخدم الواجهة المتفائلة

  • استجابة أقل من 100 مللي ثانية: لا حاجة إلى دوّار؛ فالعين البشرية بالكاد تدرك التأخير.
  • من 100 مللي ثانية إلى ثانية واحدة: دوّار خفيف (دائرة صغيرة، نص زرّ «جارٍ التحميل…») يمنع النقرات المزدوجة.
  • من ثانية إلى 10 ثوانٍ: دوّار بارز، ويُفضّل أن يعرض التقدّم إن كان قابلاً للقياس.
  • أكثر من 10 ثوانٍ: ليست مشكلة دوّار؛ اكتشف ما هو البطيء وأصلحه.

بالنسبة إلى إرسال النماذج والنقر على الأزرار، عادةً ما يكون الدوّار داخل الزرّ أفضل من طبقةٍ تغطّي الصفحة بأكملها.

الأسئلة الشائعة

استخدم CSS للدوّارات البسيطة ذات العنصر الواحد (حيلة التدوير ذات الحدود الأربعة). واستخدم SVG عندما تحتاج إلى ذيل متناقص، أو رسوم متحركة متعددة بخاصية stroke-dasharray، أو أجزاء مملوءة تبدو كضربات فرشاة. فـ CSS أصغر وأبسط، وSVG أكثر مرونة.

على الأرجح لأنك تُدوّر عنصرًا كبيرًا أو تحرّك خاصية غير مركَّبة. أبقِ حجم الدوّار صغيرًا، واستخدم transform: rotate() (لا top/margin)، وتجنّب تشغيله أثناء عمل رسوم متحركة ثقيلة أخرى.

في اتجاه عقارب الساعة في معظم الحالات تقريبًا. يبدو الدوران عكس عقارب الساعة خاطئًا على نحوٍ خفيّ، لأن معظم إشارات الدوران الواقعية (الساعات وطواحين الهواء) تسير في اتجاه عقارب الساعة. التزم بالعُرف السائد ما لم يكن لديك سبب محدّد.

باستخدام setTimeout(..., 300) في JavaScript يضيف صنف مؤشر التحميل، مع clearTimeout إذا انتهت العملية أولًا. يمنع ذلك الوميض عند الاستجابات السريعة دون إخفاء التأخيرات الحقيقية.

أدوات ذات صلة

الأداة متاحة بلغات أخرى