Як працює механізм «прилипання» під час скролу?
Механізм «прилипання» (position: sticky) заснований на порівнянні позиції елемента зі скролом усередині його контейнера та перемиканні режиму відображення.
Працює так:
1) Старт: елемент поводиться як relative
Елемент займає місце в потоці й рухається разом зі сторінкою, поки під час прокрутки його верхній (або інший) край не досягне заданого порогу, наприклад:
element {
position: sticky;
top: 0;
}2) Момент прилипання
Коли за розрахунками браузера елемент має перетнути лінію top: 0 (або top: 10px, якщо так задано), він зупиняється і «прилипає» до цієї точки, ніби став fixed.
На цьому етапі він:
- залишається на екрані,
- при цьому продовжує резервувати місце в потоці (важлива відмінність від
fixed).
3) Обмеження контейнером
Елемент «прилипає» лише в межах свого контейнера, що прокручується. Якщо контейнер закінчився (дочірній елемент доїхав до нижньої межі батьківського елемента), прилипання припиняється, і елемент знову рухається разом із контентом.
Щоб sticky спрацював, мають виконуватися умови
- заданий
top,bottom,leftабоright - у батьківського елемента немає
overflow: hidden|auto|scroll(інакше прилипання відбувається лише всередині цього контейнера) - елемент перебуває у блочному нормальному потоці (не
absolute, неfixed)
Коротке резюме
- до порогу → як
relative - після порогу → як
fixed - у межах батьківського елемента → до моменту, коли той закінчиться
Механізм - це фактично динамічне перемикання режиму позиціонування на льоту під час скролу.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.