【CSSのみ】表示領域へピタッと移動する方法!スクロールスナップの実装

プログラミング プログラミング

今回はスクロールスナップの実装についてまとめておきます。

 

こんな人におすすめ
表示領域へピタッととめたい
CSSのみでスクロールスナップを実装したい

スクロールスナップとは

ページをスクロールしているときに、見せたいエリアを表示させる方法です。

 

実装されているサイト

このLPは、私が作成した簡易LPです。

ex cafe のサイト
口当たりのいい飲み物と素材にこだわった食べ物のカフェ

 

このブログ内でもスクリーンショットを公開しています。

【コーディング】Cafeサイト
cafeサイトのコーディングを行いました。 LP SP URL ポイント スクロールの停止位置を「スクロールスナップ」で指定

 

実装

実際にスクロールスナップを実装していきましょう。

今回は下記のようなものを作成します。

試しにスクロールしてみてください。

 

See the Pen
scroll-snap
by そんそん@プログラミング勉強中 (@sonsonfinal)
on CodePen.

 

HTML

<div class="container">

 <section class="section-1">
  <h1>1</h1>
 </section>

 <section class="section-2">
  <h2>2</h2>
 </section>

 <section class="section-3">
  <h2>3</h2>
 </section>

</div>

CSS

.container {
 overflow: auto;
 scroll-snap-type: y mandatory; /* ① */
 height: 100vh;
}


section {
 height: 100vh; /* ② */
 scroll-snap-align: start; /* ③ */
 font-size: 10rem;
 text-align: center;
}


.section-1 {
 background: pink;
}



.section-2 {
 background: red;
}



.section-3 {
 background: skyblue;
}

スクロールする軸の指定 ①に関して

親要素に指定する「scroll-snap-type」でスクロール位置を調整する軸の指定を行います。
値を「y」にすれば縦方向にスクロールさせたいエリアで止まります。
「mandatory」も追加することで、現在表示しているエリアか、次のエリアか、どちらか一方のみが表示されます。

高さの指定 ②に関して

高さを「100vh」にすることで、画面いっぱいに広げる指定を行います。

親要素のどの位置で停止させるか ③に関して

値を「start」とすることで、エリアの開始位置でスクロールを停止します。
上記の指定を行うことで、表示領域へピタッととめるスクロールスナップを実装できます。

まとめ

CSSのみでスクロールスナップを実装する際は下記を指定する。
  • スクロールさせる軸
  • 高さの指定
  • どの位置で停止させるか

 

以上、参考になれば幸いです。

ご覧いただき、ありがとうございました。

コメント

  1. […] 【CSSのみ】表示領域へピタッと移動する方法!スクロールスナップの実装CSSのみでスクロールスナップを実装する方法を記載しています。コードもすべて公開しているので、コピー&ペ […]

タイトルとURLをコピーしました