مولّد مؤشرات التحميل بلغة 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 إذا انتهت العملية أولًا. يمنع ذلك الوميض عند الاستجابات السريعة دون إخفاء التأخيرات الحقيقية.

أدوات ذات صلة

مرجع جدول ASCII

جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.

مرجع أحرف HTML

قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.

أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator)

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

مولد تراخيص

قم بإنشاء النص الكامل لترخيصات المصدر المفتوح مع إدخال اسمك والسنة المقابلة، ويشمل ذلك تراخيص MIT وApache 2.0 وGPLv3 وBSD-3 وMPL-2.0 وCC.

مولّد إعدادات Nginx

أنشئ كتل server في Nginx مع TLS وHTTP/2 وgzip والتخزين المؤقت في المتصفح وقواعد الوكيل العكسي، انطلاقًا من نموذج بسيط.

مولد ملف tsconfig.json

أنشئ ملف tsconfig.json نظيفا باختيار target وmodule وmoduleResolution وJSX وأعلام الصرامة الشائعة، ثم انسخ الإعداد المولّد إلى مشروعك.

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