Створення слайдера з CSS scroll snapping

Створення слайдера з CSS scroll snapping

5 Березня 2024 в 22:33 40

У сучасному веб-дизайні слайдери використовуються дуже часто, щоб показати велику кількість контенту на обмеженому просторі екрану. Однак, деякі вимоги до дизайну можуть стати викликом для розробників, зокрема, коли потрібно зробити так, щоб кожен слайд був ширший за видиму область екрану, і при цьому його центр прицільно вирівнювався з центром видимої області. Ця задача вирішується за допомогою CSS scroll snapping. У цій статті ми розглянемо, як створити такий слайдер і як вирішити можливі проблеми, що виникають при використанні цієї техніки.

Для початку розглянемо основи CSS scroll snapping. Scroll snapping – це техніка, яка дозволяє контролювати точку, до якої прокручується вміст при прокручуванні. Це особливо корисно при створенні слайдерів та галерей, коли потрібно, щоб елементи прокручувалися покроково, “прицільно” до певних меж. CSS scroll snapping визначається за допомогою властивостей scroll-snap-type та scroll-snap-align.

Враховуючи це, нам потрібно створити контейнер для слайдів, який буде прокручуватися горизонтально. Візуально це може виглядати як неперервна послідовність слайдів, кожен з яких має займати більше місця, ніж видима область екрану. Для цього ми використовуємо контейнер з CSS властивістю overflow-x: scroll;.

У даному коді .scroller – це клас контейнера, що містить всі слайди. Ми встановлюємо для нього ширину 100vw, щоб забезпечити горизонтальну прокрутку, а також встановлюємо тип scroll snapping на осі X, вказуючи, що прокрутка має відбуватися прицільно до слайдів.

Далі, ми визначаємо стилі для самого слайду:

У цьому коді .slide – це клас окремого слайда. Ми встановлюємо для нього scroll-snap-align: center, щоб вирівняти центр слайда з центром видимої області. Також ми встановлюємо ширину слайда на 160vw, щоб кожен слайд був ширший за видиму область екрану. Висоту слайда ми встановлюємо на 100vh, щоб вона відповідала висоті екрану.

Щоб забезпечити адаптивність та кросс-браузерну сумісність, можна додати деякі додаткові стилі:

Цей медіазапит змінює ширину слайда на 100vw при ширині екрану менше 768px, щоб забезпечити коректне відображення на мобільних пристроях.

Проте, іноді можуть виникати проблеми зі scroll snapping, особливо коли слайди не вирівнюються по центру видимої області, як очікувалося. Наприклад, ви можете помітити, що слайди прицільно прилипають до початку та кінця видимої області, а не до її центру. Це може бути зумовлено властивістю scroll-snap-type: x mandatory;.

Для вирішення цієї проблеми можна спробувати змінити значення scroll-snap-type на scroll-snap-type: x proximity;. Це змінить поведінку scroll snapping і слайди будуть прицільно вирівнюватися до центру видимої області, як ви хочете.

Це має вирішити вашу проблему і зробити слайдер працюючим так, як ви хочете. Зверніть увагу, що деякі браузери можуть підтримувати не всі властивості CSS scroll snapping, тому перед використанням цієї техніки рекомендується перевірити її підтримку в вашій цільовій аудиторії.

В цій статті ми розглянули, як створити слайдер з використанням CSS scroll snapping, вирішити можливі проблеми зі scroll snapping і зробити ваш веб-сайт ще більш привабливим для користувачів, надаючи їм зручний і ефективний спосіб перегляду контенту.

Детальніше про CSS scroll snapping можна дізнатися з документації MDN.