tamakipedia

フロントエンドエンジニア。Typescriptもう特訓中です。一日の振り返りや学んだことをちょっとずつ吐いています。

【css】scroll-snapプロパティー で気持ちいスクロールを

スクロールで特定の要素にピタッと止まるスクロールありますよね
実はjsではなくcssで実現できるそうです。

scroll-snapというプロパティーを使って表現します。

100vhの要素が二つ重なっている状態を作って

<div class="container">
  <section class="area">1</section>
  <section class="area">2</section>
</div>

それぞれにcssscroll-snap-align: start;を実装します。
そして親要素にoverflow:auto;``scroll-snap-type: y mandatory;を追加します。

<style>
.container {
  overflow: auto;
  scroll-snap-type: y mandatory;
  height: 100vh;
}
.area {
  scroll-snap-align: start;
  height: 100vh;
  background: yellow;
}
.long-height{
  height: 300vh;
    background: green;
}
</style>

動きはこのような感じになります。

See the Pen scroll-snap で気持ちいいスクロール by たまき こう (@ulqvhvox) on CodePen.

横にスクロールする時は

scroll-snap-type: x;

下のプロパティーは子要素に記入し、
ストップするプロパティーをどの位置にするかを設定できます。
centerにすると要素が画面の中央になるように調節できます。 d

scroll-snap-align: start;

おしまい