بودكاست CSS - 034: تجاوز
عندما يتجاوز المحتوى نطاق الصفحة الرئيسية، تتوفّر لك العديد من الخيارات لكيفية التعامل معه. ويمكنك التمرير لإضافة مساحة إضافية وقص الحواف المتجاوزة أو تحديد المنتصف بعلامة الحذف والمزيد. من المهم بشكل خاص مراعاة المحتوى الزائد عند تطوير تطبيقات الهواتف وأحجام الشاشات المتعددة.
هناك خياران مختلفان للاقتصاص في CSS؛ سيساعد text-overflow
في كتابة سطور النص بشكل فردي، وستساعدك سمات overflow
على التحكّم في تجاوز البيانات في نموذج المربّع.
تجاوز سعة سطر واحد باستخدام text-overflow
استخدِم السمة text-overflow
في أي عنصر يحتوي على عقد نصية، مثل فقرة <p>
. يحدد كيفية ظهور النص عندما لا يتناسب مع المساحة المتاحة للعنصر. إنّ كل نص HTML المرئي على الصفحة مضمّن في عقد النصوص. لاستخدام text-overflow
، تحتاج إلى سطر واحد من النص غير المُلفَّف، لذا عليك أيضًا ضبط overflow
على hidden
ويجب أن تكون قيمة white-space
تمنع اللفّ.
p {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
استخدام سمات "المحتوى الزائد"
يتم ضبط سمات "العناصر الزائدة" على عنصر للتحكّم في ما يحدث عندما تحتاج العناصر الفرعية إلى مساحة أكبر من المساحة المتاحة. يمكن أن يكون هذا مقصودًا، كما هو الحال في خريطة تفاعلية مثل خرائط Google، حيث يتنقل المستخدم حول صورة كبيرة مقطوعة إلى حجم معين. قد يكون ذلك أيضًا عن غير قصد كما هو الحال في تطبيق دردشة حيث يكتب المستخدم رسالة طويلة لا تتناسب مع فقاعة النص.
يمكنك تقسيم المحتوى الزائد إلى جزءَين. يحتوي العنصر الرئيسي على مساحة مقيّدة بشكلٍ ثابت ولن تتغيّر. يمكنك اعتبار هذا نافذة. العناصر الفرعية هي المحتوى الذي يحتاج إلى مساحة أكبر من العنصر الرئيسي. يمكنك اعتبار هذا العنصر هو ما تنظر إليه من خلال النافذة. ستساعد إدارة الخيارات الإضافية في تحديد كيفية إطارات النافذة لهذا المحتوى.
التمرير على المحور الرأسي والأفقي
تتحكّم السمة overflow-y
في التجاوز الفعلي على طول المحور الرأسي لإطار عرض الجهاز، وبالتالي يتم الانتقال للأعلى وللأسفل.
تتحكم السمة overflow-x
في التجاوز على طول المحور الأفقي لإطار عرض الجهاز، وبالتالي يتم الانتقال لليمين واليسار.
الخصائص المنطقية لاتجاه التمرير
تضبط السمتان overflow-inline
وoverflow-block
القائمة الكاملة استنادًا إلى اتجاه المستند ووضع الكتابة.
اختصار overflow
يضبط الاختصار overflow
نمطي overflow-x
وoverflow-y
في سطر واحد:
overflow: hidden scroll;
في حال تحديد كلمتَين رئيسيتين، تنطبق الأولى على overflow-x
والثانية على overflow-y
. في الحالات الأخرى، يتم استخدام القيمة نفسها في كل من overflow-x
وoverflow-y
.
القيم
لنلقِ نظرة أقرب على القيم والكلمات الرئيسية المتاحة لمواقع overflow
.
overflow: visible
(تلقائي)- في حال عدم ضبط السمة، تكون
overflow: visible
هي القيمة التلقائية للويب. ويضمن ذلك عدم إخفاء المحتوى أبدًا عن غير قصد ويتبع المبادئ الأساسية المتمثلة في "عدم إخفاء المحتوى أبدًا". أو "تنسيقات آمنة للتنسيقات الدقيقة". overflow: hidden
- عندما يتم اقتصاص محتوى
overflow: hidden
في الاتجاه المحدّد، لا يتم توفير أشرطة تمرير لعرضه. overflow: scroll
- يفعّل
overflow: scroll
أشرطة التمرير للسماح للمستخدمين بالتمرير خلال المحتوى. ستظهر أشرطة التمرير حتى إذا لم يكن المحتوى يتدفق حاليًا. وهذه طريقة رائعة لتقليل متغيّرات التصميم المستقبلية إذا كان من الممكن تمرير الحاوية في المستقبل استنادًا إلى تغيير الحجم، على سبيل المثال، عند تغيير الحجم، وتجهيز المستخدم بشكل مرئي للمناطق التي يمكن التنقّل فيها. overflow: clip
- كما هو الحال
overflow: hidden
، يتم تثبيت المحتوى الذي يتضمنoverflow: clip
في مربّع المساحة المتروكة للعنصر. الفرق بينclip
وhidden
هو أنّ الكلمة الرئيسيةclip
تحظر أيضًا كل التمرير، بما في ذلك التمرير الآلي. overflow: auto
- أخيرًا، القيمة الأكثر استخدامًا هي
overflow: auto
. وهذا يحترم إعدادات المستخدم المفضّلة ويعرض أشرطة التمرير إذا لزم الأمر، إلا أنه يخفيها تلقائيًا ويتحمل مسؤولية الانتقال إلى المستخدم والمتصفّح.
الانتقال للأعلى أو للأسفل
يقدّم العديد من سلوكيات overflow
هذه شريط تمرير، ولكن هناك بعض سمات وسلوكيات التمرير المحدّدة التي يمكن أن تساعدك في التحكّم في الانتقال إلى الحاوية الكاملة.
التمرير وإمكانية الوصول
من المهم التأكّد من أنّ المنطقة القابلة للتمرير يمكنها قبول التركيز حتى يتمكن مستخدم لوحة المفاتيح من الانتقال إلى المربّع، ثم استخدام مفاتيح الأسهم للتمرير.
للسماح لمربّع التمرير بقبول التركيز، أضِف tabindex="0"
، واسمًا يتضمّن سمة aria-labelledby
، وسمة role
مناسبة. على سبيل المثال:
<div tabindex="0" role="region" aria-labelledby="id-of-descriptive-text">
content
</div>
يمكن بعد ذلك استخدام CSS للإشارة إلى أنّه تم التركيز على المربّع، وذلك باستخدام السمة outline
لتقديم دليل مرئي على أنّه يمكن الآن التمرير فيه.
في مقالة استخدام CSS لفرض تسهيل الاستخدام، يوضّح "أدريان روزيلي" كيف يمكن أن يساعد CSS في منع حدوث تراجعات في تسهيل الاستخدام. على سبيل المثال، لتفعيل الانتقال للأعلى أو للأسفل فقط وإضافة مؤشر التركيز في حال استخدام السمات الصحيحة. تتيح القواعد التالية إمكانية الانتقال للأعلى أو للأسفل في المربّع إذا كان يتضمّن السمات tabindex
وaria-labelledby
وrole
.
[role][aria-labelledby][tabindex] {
overflow: auto;
}
[role][aria-labelledby][tabindex]:focus {
outline: .1em solid blue;
}
موضع شريط التمرير ضمن نموذج المربّع
تشغل أشرطة التمرير مساحة داخل مربّع المساحة المتروكة ويمكنها المنافسة على المساحة في حال استخدام inline
وليس overlaid
. تشرح وحدة نموذج المربّع بالتفصيل هذا المصدر المحتمَل لتغيير التنسيق.
شريط تمرير الجذر مقابل التمرير الضمني
قد تلاحظ أنّ بعض المستخدمين في التمرير يتّبع سلوك السحب للتحديث وغيرها من السلوكيات الخاصة، خاصةً عند تطوير التطبيقات للأجهزة الجوّالة والمختلطة. ويحدث سلوك الانتقال هذا في شريط التمرير الجذر. لا يتوفّر سوى شريط تمرير جذر واحد في الصفحة. بشكل تلقائي، يكون documentElement هو أشرطة التمرير الجذري في الصفحة، ولكن من خلال تغيير العنصر الذي يمثّل أشرطة التمرير الجذر، يمكن تطبيق السلوكيات الخاصة على أدوات التمرير بخلاف eventElement، ونطلق على شريط التمرير الجديد اسم شريط تمرير الجذر الضمني.
لإنشاء شريط تمرير أساسي، يمكنك استخدام ما يُعرف باسم ترقية شريط التمرير من خلال وضع حاوية كعنصر ثابت، ما يضمن أن تغطي مساحة العرض بالكامل وأن يكون فهرس z في الأعلى مع شريط تمرير. يمكنك الاطّلاع على ميزة "أداة التمرير في الصفحة الرئيسية" مقارنةً بميزة "أداة التمرير الضمني المُدمَج" هنا.
scroll-behavior
يسمح لك scroll-behavior
بتفعيل التمرير إلى العناصر التي يتحكّم فيها المتصفّح. يتيح لك ذلك تحديد كيفية التعامل مع عناصر التنقّل داخل الصفحة، مثل .scrollTo()
أو الروابط.
ويعد ذلك مفيدًا بشكل خاص عند استخدامه مع prefers-reduced-motion لتحديد سلوك التمرير استنادًا إلى الإعدادات المفضّلة للمستخدم.
@media (prefers-reduced-motion: no-preference) {
.scroll-view {
scroll-behavior: auto;
}
}
overscroll-behavior
إذا وصلت إلى نهاية نافذة منبثقة، ثم واصلت الانتقال للأعلى أو للأسفل وتحرّكت الصفحة خلف النافذة المنبثقة، هذا يعني أنّه تم ربط الانتقال للأعلى أو للأسفل، أو تم نقله إلى حاوية الانتقال للأعلى أو للأسفل الرئيسية. تتيح لك سمة overscroll-behavior
منع تسرّب الانتقال إلى أعلى الصفحة أو أسفلها في حاوية رئيسية (يُعرف ذلك باسم ربط الانتقال إلى أعلى الصفحة أو أسفلها).
التحقّق من فهمك
اختبر معلوماتك عن التجاوز
هل عنصر "تدفّق النص" هو نفسه عنصر "تدفّق العناصر"؟
تقبل السمة overflow
كلمتَين رئيسيتَين، وفي أي محور تنتمي الكلمة الرئيسية الأولى؟
ما المساحة في نموذج المربع التي تستهلكها أشرطة التمرير عند العرض وتضمينه؟
للحفاظ على الزخم الإضافي من الانتقال إلى أعلى أو أسفل في شريط تمرير ضمني متداخل، ما هي السمة التي ستستخدمها؟
scroll-padding
scroll-hint
scroll-behavior
overscroll-effect
overscroll-behavior