ログイン
問題6

スクロールスナップを実装しよう

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

アイコン画像

問題6:スクロールスナップを実装しよう

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

画像につきましては 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!!
LINEの友達追加でお役立ち動画をGET!!

閉じる