Summary

  • حين يبلغ مربع قابل للتمرير حافته، قد ينقل المتصفح ما تبقى من الحركة إلى مربع أكبر يحيط به. تتوقف الدردشة وينطلق المقال من خلفها.
  • يمنع contain انتقال الحركة إلى الخارج مع إبقاء إشارة محلية عند الحافة، بينما يمنع none الإشارة أيضًا. الفرق يحدد ما يشعر به القارئ عند نهاية المحتوى.

السيناريو مألوف: مقال طويل ونافذة دردشة صغيرة فوقه. يقرأ الزائر آخر سطر، يدير عجلة الفأرة مرة أخرى، فيختفي جزء من المقال. تصف أول مسودة عمل علنية لـW3C في 2019 ما جرى بسلسلة التمرير. تبدأ الحركة داخل النافذة، وعند بلوغ حافتها يمكن أن تنتقل إلى العنصر الأب. بالنسبة إلى المتصفح هذا مسار منظم؛ وبالنسبة إلى القارئ كأن أرضية الدردشة تحولت فجأة إلى مصعد للمقال.

كان بوسع الموقع أن يحرس الحافة بشيفرة JavaScript تراقب اللمس أو عجلة الفأرة وتستدعي preventDefault() عند اللزوم. تسجل المسودة ثمن ذلك الحارس. مستمع الأحداث غير السلبي قد يجعل المتصفح ينتظر قرار الشيفرة، فيتأخر التمرير. وإلغاء الحدث كله قد يوقف الحركة الطبيعية حتى الحافة، بينما المراد منع ما يحدث بعدها. وقد يُظهر المتصفح ارتدادًا أو ضوءًا صغيرًا داخل نافذة الدردشة ليعلن الوصول. يرغب الناشر في إبقاء هذه الإشارة، مع منع المقال من الرحيل. أمر الإلغاء العام يعامل الأمرين كأنهما شيء واحد.

في محضر اجتماع مجموعة عمل CSS في ديسمبر 2016، كان الاسم المقترح scroll-boundary-behavior، امتدادًا لفكرة أقدم عن تسلسل التمرير. طرح Tab Atkins السؤال المباشر: إذا وصلت الحركة إلى أعلى المربع أو أسفله، هل تهرب إلى الخارج أم تبقى فيه؟ وذكّر Simon Fraser بأن بعض المتصفحات تثبت هدف التمرير طوال الإيماءة، وحذّر من منح الصفحات قدرة على حبس المستخدم. وردت نافذة دردشة بلغت آخر رسائلها مثالًا عمليًا. أبدى الحاضرون تأييدًا لتحديد السلوك في مواصفة، لكنهم لم يحسموا التفاصيل؛ حتى الاسم كان يحتاج إلى عمل.

نضج المقترح داخل WICG، ثم طلب المحرر Majid Valipour في يناير 2018 نقله إلى مسودات مجموعة عمل CSS باسم overscroll-behavior. سجّل الطلب وضع التنفيذ في المتصفحات آنذاك. الأهم أن علاج مشكلة نافذة واحدة صار موضوع اتفاق عام بين صانع الصفحة وصانع المتصفح. يحدد الناشر موضع الحد، ويظل المتصفح مسؤولًا عن تفسير حركة اليد.

يسجل تاريخ منشورات W3C يوم 6 يونيو 2019 تاريخًا لأول مسودة عمل علنية. فرّقت المسودة بين فعل محلي عند الحافة، كالارتداد داخل الدردشة، وفعل يتجاوزها، كنقل التمرير إلى المقال أو تشغيل التنقل. يترك auto السلوك المعتاد للمتصفح. يمنع contain الأفعال التي تتجاوز النافذة، مع السماح بإشارتها المحلية. ويمنع none الأمرين معًا. قد تحتاج الدردشة إلى إيماءة صغيرة تقول «وصلت إلى النهاية»، فيما تفضل قائمة لا تنتهي وتحمّل عناصر جديدة حافة هادئة. ليس كل باب بحاجة إلى القفل نفسه.

ثم ظهرت مشكلة الاتجاه. محورَا x وy يصفان اتجاهين ماديين، لكن سريان النصوص لا يتبع دائمًا الافتراض نفسه. في اجتماع برلين في أبريل 2018 قررت المجموعة إضافة الصيغتين block وinline، لتتبع القاعدة اتجاه التخطيط المنطقي. عند كتابة نسخة عربية أصلية، يصبح هذا القرار ملموسًا؛ قاعدة صُممت لصفحة تسير في اتجاه واحد لا تكفي لكل القراء.

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