VIDEO LESSON

CSSのscroll-behaviorの使い方:指定値・実例・効かない原因とブラウザー互換性の解説動画

再生時間 6:55動画を別のタブで開く ↗
動画の字幕・文字起こしを読む

再生中の字幕を濃い黒で表示し、一番上に追従します。字幕の行を選ぶと、その位置から再生できます。

  1. 0:00こんにちは。
  2. 0:00シーエスエス、リファレンス解説です。
  3. 0:03今回のテーマは、スクロール・ビヘイビアです。
  4. 0:07ページ内リンクをクリックしたとき、移動先へ一瞬で切り替わるのではなく、滑らかにスクロールして移動する、
  5. 0:12その動き方を決めるプロパティです。
  6. 0:17前回は要素を変形させるトランスフォームを見ました。
  7. 0:21今回は、値がスムースとオートの二つだけという、とてもシンプルな指定を取り上げます。
  8. 0:27基本の書き方、実例での比較、効かないときの確認、そして動きを減らす設定への配慮まで、
  9. 0:31順番に見ていきましょう。
  10. 0:35たとえば、長いページの先頭にある目次リンクや、ページの上へ戻るリンクを思い浮かべてください。
  11. 0:42その移動の見え方が、このプロパティ一つで変わります。
  12. 0:46書き方を確認します。
  13. 0:48スクロール・ビヘイビアは、スクロールする領域、つまりスクロールコンテナーになる要素に指定します。
  14. 0:55クラス名デモの要素に対して、スクロール・ビヘイビア、コロン、スムース、セミコロン、
  15. 0:59と書くのが基本形です。
  16. 1:02ページ全体のスクロールを滑らかにしたい場合は、ルート要素であるエイチティーエムエル要素に指定する書き方もよく使われます。
  17. 1:11大切なのは、動かしたいスクロールそのものを担当する要素に書く、という点です。
  18. 1:17リンク側のエー要素に書いても効果はないので、指定先を間違えないようにしましょう。
  19. 1:23指定できる値は、オートとスムースの二つです。
  20. 1:26オートは初期値で、移動先へ瞬時にジャンプする、ふだん見慣れた動きです。
  21. 1:32スムースは、ブラウザーがアニメーションしながら滑らかにスクロールします。
  22. 1:37距離が長いほど移動に時間がかかり、途中の景色が見えるので、読み手が、どこへ移動したかを把握しやすくなります。
  23. 1:45この指定が効くのは、ページ内リンクによるアンカー移動や、一部のプログラムによるスクロールです。
  24. 1:52マウスホイールや指での手動スクロールの速さは変わらない、という点も覚えておきましょう。
  25. 1:59初期値と継承を確認します。
  26. 2:01初期値はオートです。
  27. 2:02そして、このプロパティは通常は継承しません。
  28. 2:05親要素にスムースを指定しても、内側の別のスクロール領域には自動では伝わらないので、
  29. 2:09領域ごとに指定が必要です。
  30. 2:13また、汎用的な値として、親の計算値を使うインヘリット、初期値に戻すイニシャルも書けます。
  31. 2:19アンセットは、継承しないプロパティなので、イニシャルと同じ扱いになります。
  32. 2:24普段はスムースかオートを直接書けば十分で、汎用値は読み解くときに知っていると安心です。
  33. 2:30実例で違いを比べてみましょう。
  34. 2:32まずエイチティーエムエルを用意します。
  35. 2:35リンクを置き、その下に、高さを決めて、中身があふれたらスクロールできる領域を作ります。
  36. 2:40領域の中には、背の高い余白用の段落、移動先の見出し、後続の段落を入れます。
  37. 2:45リンクのエイチアールイーエフには、見出しのアイ・ディーと同じ名前を、シャープ付きで書きます。
  38. 2:50こうすると、クリックしたときに、その見出しへ移動する仕組みになります。
  39. 2:55スタイルシートは、ヘッド内のリンク要素で読み込んでおきます。
  40. 2:58この実例は、ページ全体ではなく、決まった高さの領域の中でスクロールが起きる形です。
  41. 3:04領域の中だけが動くので、違いを小さな画面でも確認しやすいのが利点です。
  42. 3:08次にスタイルシートです。
  43. 3:10ステージで全体の幅と余白を整え、デモのクラスで枠線や背景を付けます。
  44. 3:15スクローラーで高さを十二レムにし、オーバーフロー・オートで、中身があふれた分だけスクロールできるようにします。
  45. 3:22スペーサーで高さを確保して、スクロールが必要な状態を作るのが土台です。
  46. 3:27そして最後に、今回変更するプロパティとして、デモにスクロール・ビヘイビア、
  47. 3:31スムースを指定します。
  48. 3:34加えて、動きを減らす設定の人向けに、メディアクエリでオートへ戻す行も用意しています。
  49. 3:40では、値をオートに書き換えて比べてみましょう。
  50. 3:44ファイルを保存したら、ブラウザーを再読み込みして、リンクをクリックします。
  51. 3:49スムースのときは、見出しまで滑らかにスクロールして、移動の過程が見えました。
  52. 3:55一方、オートでは、一瞬で見出しの位置へ切り替わります。
  53. 3:59たった一語の違いで、体感が大きく変わるのが分かります。
  54. 4:03比べるときは、ほかの指定は変えず、この値だけを切り替えるのがコツです。
  55. 4:09原因と結果の対応がはっきりして、理解が深まります。
  56. 4:12配慮の話です。
  57. 4:13滑らかなスクロールは便利ですが、画面の大きな動きで気分が悪くなる人もいます。
  58. 4:19そこで、端末やブラウザーで、動きを減らす設定をしている人には、スムースを無効化するのが望ましいとされています。
  59. 4:27書き方は、プリファーズ・リデュースト・モーション、リデュースのメディアクエリの中で、
  60. 4:32スクロール・ビヘイビアをオートに戻し、インポータントを付ける形です。
  61. 4:38実例のスタイルシートにも、この行があらかじめ入っていました。
  62. 4:42飾りの動きほど、止める手段を用意しておくことが大切です。
  63. 4:46効かないときの確認です。
  64. 4:48まず多い勘違いは、手動スクロールの速度を変える指定だと思ってしまうことです。
  65. 4:53ホイールやスワイプの動きには影響しません。
  66. 4:56次に、指定する要素の取り違えです。
  67. 4:58実際にスクロールしている要素に指定されているかを確認しましょう。
  68. 5:03さらに、ブラウザーの設定でスムーススクロール自体が無効になっていると、ブラウザーがスムースを無視する場合もあります。
  69. 5:11開発者ツールでは、スタイルシートが読み込まれているか、セレクターが一致しているか、
  70. 5:17宣言が打ち消されていないか、最後にコンピューテッドで最終値は何かを、順番にたどります。
  71. 5:23ブラウザー互換性です。
  72. 5:25二千二十六年九月に確認された、エムディーエヌのデータでは、クロームは六十一以降、
  73. 5:32エッジは七十九以降、ファイアフォックスは三十六以降、サファリは十五点四以降で使えます。
  74. 5:38アンドロイド版クロームは六十一以降、アイオーエス版サファリは十五点四以降です。
  75. 5:45スムースとオート、どちらの値も同じ対応状況です。
  76. 5:49サファリは対応が始まるのが少し遅かったので、古い端末では瞬時に移動するだけ、
  77. 5:53と割り切ると安全です。
  78. 5:57対応していない環境でも、リンクの移動そのものは問題なく動きます。
  79. 6:02なお、ここでの対応はプロパティ自体のものです。
  80. 6:06組み合わせる他の指定まで含めて確認したい場合は、エムディーエヌの個別ページもあわせて参照してください。
  81. 6:14練習とまとめです。
  82. 6:16まず、スムースとオートの違いを、自分の言葉で説明してみてください。
  83. 6:21次に、実例の値だけを切り替えて、移動の見え方を比べましょう。
  84. 6:26関連するプロパティとして、移動先の見出しが固定ヘッダーに隠れないよう調整する、
  85. 6:33スクロール・パディング・トップと、スクロール・マージン・トップが、次回以降のテーマです。
  86. 6:40今回のポイントは三つ。
  87. 6:41スクロール・ビヘイビアはスクロールする要素に書くこと、値はスムースとオートの二択であること、
  88. 6:47そして、動きを減らす設定への配慮を忘れないことです。
  89. 6:53お疲れさまでした。
日本語字幕をダウンロード(WebVTT)

この動画で学べること

scroll-behaviorの役割と主な指定値を解説。ページ内リンクによる移動が滑らかになるかを比べます。初期値・継承・ブラウザー互換性、効かないときの確認方法も整理します。

解説記事・サンプルコードを読む:CSSのscroll-behaviorの使い方:指定値・実例・効かない原因とブラウザー互換性 →