ログイン

問題6 ピタッと止まるスクロールスナップを実装しよう

HTML_CSSの問題

HTML_CSS

スクロールスナップとは、スクロールした時に、特定の画面領域でぴったりスクロールが止まる動きのことを言います。 最近のWebサイトではよく使われている技術なので実装できるようにしておきましょう。

ピタッと止まるスクロールスナップを実装しよう

問題

お洒落なサイトなどで実装されているスクロールスナップを実装してみましょう。

画像につきましては https://ninjacode.work/assets/img/kv.png こちらを使用して大丈夫です。

見本を動画を参考に作成してください。

期待する画面

コードのアイコン

解答ソースコード

              <div>
  <section class="snap-area snap-area--red"></section>
  <section class="snap-area snap-area--blue"></section>
  <section class="snap-area snap-area--yellow"></section>
  <section class="snap-area snap-area--green"></section>
  <section class="snap-area snap-area--pink"></section>
</div>
¥HTML¥
            
              div {
    overflow: auto;
    scroll-snap-type: y mandatory;
    height: 100vh;
  }
  .snap-area {
    position: relative;
    scroll-snap-align: start;
    height: 100vh;
  }
  .snap-area::before {
    content: ";
    display: inline-block;
    width: 375px;
    height: 200px;
    background-size: cover;
    background-repeat: no-repeat;
    background-image: url(https://ninjacode.work/assets/img/kv.png);
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
  }
  .snap-area--red {
      background-color: red;
  }
  .snap-area--blue {
      background-color: blue;
  }
  .snap-area--yellow {
      background-color: yellow;
  }
  .snap-area--green {
      background-color: green;
  }
  .snap-area--pink {
      background-color: pink;
  }
¥CSS¥
            
答えのアイコン

解説

スクロールさせる際はまず親要素に対して
overflow: auto; と scroll-snap-type: y mandatory; を付与します。

その際に横にスクロールさせたい場合は、scroll-snap-type: x mandatory; としましょう。
中に入ったリスト要素に対してheight: 100vhを付与し画像を浮かして真ん中にすれば出来上がりです。
ログインして解答を見る
スナップスクロールを実装する場合、うまく機能させる為にoverflow: auto; と scroll-snap-type: y mandatory; は必ずセットで付与するように覚えておきましょう。

リスト要素は高さを100vhと指定することで、画面の高さいっぱいに要素が広がってくれます。
そこにscroll-snap-align: start;を付与することで、スナップスクロールが実現されます。
twitterのアイコン
活動記録をTweetする
完了にする!
1.HTMLの宣言をしてみよう
続きの動画を見たい方は公式LINEから「HTML」と送信すると動画が見れます。
LINEの友達追加でお役立ち動画をGET!!