مولّد شريط التمرير CSS

التالي

كانت أشرطة التمرير المخصّصة فيما مضى كابوسًا من العناصر الزائفة ذات البادئات الخاصة بالمورّدين. أما اليوم، فتغطّي scrollbar-color وscrollbar-width الحالات الشائعة في جميع المتصفحات الحديثة: عرض ضيّق أو عادي، وسمة بلونين (المقبض والمسار). وللتحكم على مستوى البكسل (الحشو الداخلي للمسار، ونصف قطر المقبض، وحالات التمرير فوقه) لا تزال العناصر الزائفة القديمة ::-webkit-scrollbar تعمل في Chrome وSafari. يُنتج هذا المولّد النوعين معًا ويرتّبهما تراتبيًا على النحو الصحيح.

كيفية تنسيق شريط التمرير

  1. 1

    اختر العرض

    تلقائي (العرض الافتراضي للمنصّة)، أو رفيع (أضيق)، أو قيمة بكسل محدّدة عبر قواعد webkit.

  2. 2

    حدّد لوني المقبض والمسار

    تأخذ `scrollbar-color` الحديثة لونين. أما قواعد webkit فتتيح لونًا ونصف قطر وحالات تمرير فوقه بشكل منفصل.

  3. 3

    أضف تأثير التمرير فوقه (اختياري)

    يصبح المقبض أفتح عند التمرير فوقه. يعمل عبر `::-webkit-scrollbar-thumb:hover`.

  4. 4

    حدّد النطاق

    طبّقه على `html` / `body` (الصفحة بأكملها)، أو على حاوية تمرير محدّدة فقط.

  5. 5

    انسخ CSS

    قواعد حديثة وقواعد webkit مجتمعة: تعمل في كل متصفح حديث مع تراجع سلس.

الخصائص القياسية الحديثة (2023 فما بعد)

/* Applies to the element that scrolls */
html {
  scrollbar-width: thin;           /* auto | thin | none */
  scrollbar-color: #4f46e5 #e5e7eb; /* thumb track */
}

دعم المتصفحات (2024):

  • scrollbar-width: Chrome 121+، Safari 18.2+، Firefox 64+.
  • scrollbar-color: Chrome 121+، Safari 18.2+، Firefox 64+.
  • scrollbar-gutter: stable: Chrome 94+، Safari 14+، Firefox 97+. يحجز مساحة شريط التمرير حتى عند عدم الحاجة إليها، مما يمنع إزاحة التخطيط.

العناصر الزائفة لـ webkit (Chrome، Safari، Edge الأقدم)

::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}
::-webkit-scrollbar-track {
  background: #e5e7eb;
  border-radius: 10px;
}
::-webkit-scrollbar-thumb {
  background: #4f46e5;
  border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
  background: #3730a3;
}

تحكّم أدقّ. تحدّد width عرض شريط التمرير العمودي، وتحدّد height ارتفاع شريط التمرير الأفقي. أضِف كليهما للحاويات التي يمكن أن تُمرَّر في أيّ اتجاه.

ترتيب النهجين تراتبيًا

حدّد القواعد الحديثة أولًا، ثم webkit كتحسين للمتصفحات التي تعرض النوعين:

.scroll-area {
  scrollbar-width: thin;
  scrollbar-color: #4f46e5 #e5e7eb;
}
.scroll-area::-webkit-scrollbar       { width: 8px; }
.scroll-area::-webkit-scrollbar-track { background: #e5e7eb; }
.scroll-area::-webkit-scrollbar-thumb {
  background: #4f46e5;
  border-radius: 4px;
  border: 2px solid #e5e7eb;
}

يلتزم Firefox بقواعد scrollbar-* الحديثة فقط. ويلتزم Chrome وSafari بقواعد webkit (التي تتجاوز القواعد الحديثة، فيبقى السلوك متّسقًا).

scrollbar-gutter يمنع إزاحة المحتوى

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

html { scrollbar-gutter: stable; }
/* or */
html { scrollbar-gutter: stable both-edges; }

تُحجَز مساحة شريط التمرير سواء تمرّر المحتوى أم لا. يضيف both-edges مساحة مماثلة على الجانب المقابل لإبقاء المحتوى موسّطًا بصريًا.

إخفاء أشرطة التمرير بالكامل

.no-scrollbar {
  scrollbar-width: none;           /* Firefox */
}
.no-scrollbar::-webkit-scrollbar { display: none; }  /* Chrome, Safari */

كن حذرًا: إخفاء شريط التمرير يمنع المستخدمين من إدراك أنّ المحتوى قابل للتمرير. استخدمه فقط مع مؤشّر واضح (أسهم، نقاط صفحات)، أو عندما يكون سلوك التمرير بديهيًا من السياق (الدوّارات الأفقية، سجلّات المحادثة).

اعتبارات الأجهزة المحمولة

على iOS وAndroid، لا تظهر أشرطة التمرير إلا للحظة أثناء التمرير. يظلّ ملف CSS المخصّص لشريط التمرير مطبَّقًا، لكن قد لا يراه المستخدمون أكثر من ثانية. صمّم وفقًا لذلك: لا تبالغ في الاستثمار في لمسات بصرية نادرًا ما تظهر.

إمكانية الوصول

  • التباين: ينبغي أن يحقّق المقبض مقابل المسار نسبة 3:1 للتباين غير النصّي (WCAG 1.4.11).
  • العرض: قد يصعب الإمساك بأشرطة التمرير الرفيعة بالفأرة، خاصةً للمستخدمين ذوي الإعاقات الحركية. العرض العادي إعداد افتراضي أكثر أمانًا.
  • لا تُزِل شريط التمرير أبدًا في المناطق القابلة للتمرير دون توفير وسيلة تمرير أخرى، وإلا فسيتعطّل المستخدمون الذين يعتمدون عليه.

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

نعم، باستخدام الخاصّيتين الحديثتين scrollbar-width وscrollbar-color. لا يدعم Firefox العناصر الزائفة الخاصة بـ webkit، لذا للحصول على مظهر متّسق عبر المتصفحات استخدم الخصائص الحديثة أولًا، ثم أضِف قواعد webkit كتحسين.

لأنّ أشرطة التمرير الافتراضية تتراكب مع المحتوى ولا تحجز مساحةً حتى الحاجة إليها. اضبط scrollbar-gutter: stable على العنصر القابل للتمرير لحجز المساحة دائمًا، مما يمنع إعادة التدفّق عند ظهور شريط التمرير أو اختفائه.

عادةً نعم، لأنّ شريط التمرير يبدو في غير موضعه ويزاحم المحتوى. أضِف نقاط ترقيم صفحات مرئية أو أزرار أسهم كي يظلّ المستخدمون على علم بأنّ المحتوى قابل للتمرير. واحترم prefers-reduced-motion إذا كنت تستخدم الالتقاط أثناء التمرير (scroll-snapping).

قد يؤثّر. يصعب استخدام أشرطة التمرير الرفيعة جدًا أو المنخفضة التباين على المستخدمين ذوي الإعاقات الحركية وضعاف البصر. حافظ على عرض شريط التمرير عند 8–10 بكسل على الأقل لسهولة الإمساك، واحفظ تباينًا بنسبة 3:1 بين المقبض والمسار.

أدوات ذات صلة

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