スクロールスナップ(css)
エリアにピタッと止まるスクロールスナップというものを紹介します。cssで簡単に実装できますのでよかったら試してみてください。
目次
スクロールスナップとは
こんな感じでそれぞれのエリアにピタッと止まるようなやつです。
以前はJavascriptを使用していたようですが、今はcssのみでやることができるので紹介します。
やり方
親要素と子要素をいくつか用意します。
HTML
<div id="container">
<div id="first"></div>
<div id="second"></div>
<div id="third"></div>
<div id="fourth"></div>
</div>
CSS
* {
margin: 0;
padding: 0;
}
#container {
overflow: auto;
scroll-snap-type: y proximity;
height: 100vh;
}
#container div {
scroll-snap-align: center;
height: 75vh;
width: 100vw;
}
#first {
background: #2a9d8f;
}
#second {
background: #e9c46a;
}
#third {
background: #f4a261;
}
#fourth {
background: #e76f51;
}
親要素である#containerには
scroll-snap-type: y proximity;
を指定しています。
「y」は方向を表していて「x」を使うと、こんな感じで横方向にスクロールできます。
他には、gridレイアウトと
scroll-snap-type: both;
を組み合わせると、縦・横どちらにもスクロールさせることもできます。
proximityというのはスクロールの調整位置を指定していて、
scroll-snap-type: x mandatory;
だとより厳密にスクロールが止まります。
「mandatory」ではそれぞれのエリアにしか止まれませんが、「proximity」はエリアとエリアの中間地点に止まれます。