Layout · فصل ٢

Sticky و Scroll Snap — CSS بس

position sticky · containing block · scroll-snap-type · scroll-snap-align · scroll-padding
🎯 الهدف: تعمل headers بتثبت وتسلّم لبعض، وأقسام بتقف بالظبط في مكانها، من غير ولا سطر JavaScript.

Sticky positioning: الهيدر يثبت وبعدين يسلّم

الـ headers بتثبت فوق، وكل واحد بيزق اللي قبله

01 · قسم 1

02 · قسم 2

03 · قسم 3

04 · قسم 4

sticky.css
.section-title {  position: sticky;  top: 0;            /* يثبت لما يوصل لأول الـ scroller */  background: white; /* من غيرها المحتوى هيبان من تحته */  z-index: 1;}

العنصر الـ sticky بيتصرف عادي، لحد ما يوصل لـ top: 0، فيثبت. بس هو محبوس جوه الأب بتاعه: أول ما الـ section يخلص، الهيدر بيمشي معاه لفوق، والهيدر اللي بعده ياخد مكانه. عشان كده كل هيدر بيبان كأنه بيسلّم اللي بعده.

Scroll Snap: الصفحة تقف في مكانها

كل لوحة بتقف مكانها بالظبط
1
2
3
4
snap.css
.scroller {  scroll-snap-type: y mandatory; /* محور y، والوقوف إجباري */  overflow-y: auto;}.panel {  height: 100%;  scroll-snap-align: start;      /* أول اللوحة يقف عند أول الـ scroller */}
الخاصيةالقيممعناها
scroll-snap-typemandatory أو proximityلازم يقف عند نقطة، ولا بس لو قريب منها
scroll-snap-alignstart أو center أو endأنهي حتة من العنصر تقف عند الحافة
scroll-snap-stopalwaysمتعدّيش اللوحة دي حتى لو المستخدم زق جامد
scroll-padding-topطولسيب مسافة فوق، مثلًا عشان header ثابت

خلّصت الفصل لما

🧠 اختبر نفسك
١) sticky شغال في Chrome بس جوه الـ card مش شغال. أول حاجة تشيّك عليها؟
أب عليه overflow غير visible.
٢) محتاج JavaScript عشان الـ snap؟
لأ. CSS بس، والمتصفح بيعمل الحركة.