Как сделать блочный скролл на сайте?

мой стек: next.js, tailwind css.

к примеру у меня есть 3 контейнера с h-screen и я хочу чтобы, скролл плавно переключал эти блоки, чтобы активный блок был по центру и нельзя было остановиться между двух блоков. я встречал на сайтах такую реализацию и мне очень интересно как это сделано. я нашёл только способ при помощи css но там плавность перехода вроде никак не регулируется и получается очень резко.

также встречал какие способы при помощи lenis, но у меня они не заработали. может быть проблема была в том что у меня fixed div, который надо скроллить в нём ещё несколько div включая div с классом container и только после него идёт контент который нужно скролить.

но как я не пытался с lenis у меня ничего не получилось.

пример моей разметки:

<div className="m-0 bg-zinc-900 fixed h-full w-full flex justify-center overflow-y-auto overscroll-y-contain touch-pan-y snap-y snap-mandatory scroll-smooth">
  <div className="container">
    <div className="flex flex-col items-center">
      <main>
        <section id="g1" className="w-full h-screen snap-start snap-always pt-8">
          <Header />
          <MovieCarousel />
        </section>
        <section id="g2" className="h-screen snap-start snap-always pt-8">
          <FilmsWindow />
        </section>
      </main>
    </div>
  </div>
</div>

примерно вот так: Источник - это мой набросок написанный на css с использованием snap-start, но здесь всё очень резко, но хочется чтобы это было с плавной красивой глазу анимацией.

введите сюда описание изображения


Ответы (0 шт):