scrollIntoViewとスムーズスクロール
2590 ワード
リンク(内チェーン)をクリックして現在のページの真ん中にジャンプする必要があることがよくあります.このようなニーズに対しては,アンカーポイントを用いて実現することが容易に考えられる.しかし、一つ問題があります.一歩転がって、硬すぎます.
私はやはり滑らかに転がるのが好きです.HTML 5にはCSS属性
このCSSプロパティは、
だからhtml要素にスタイル
ブール値またはオブジェクトの2つの形式の値を受け入れます.ブール値を受け入れるのは、スムーズスクロール(旧版)がサポートされていないブラウザと互換性があるためです.ここでは対象値だけを話します.
オブジェクトには3つのパラメータがあります.
https://codepen.io/CarterLi/p...
残念なことに、現在はブラウザのサポートが不十分です.一方、
私はやはり滑らかに転がるのが好きです.HTML 5にはCSS属性
scroll-behavior
が設けられており、一連のスクロール関数の許容パラメータを修正してスムーズスクロール特性をサポートしている.scroll-behavior
このCSSプロパティは、
auto
とsmooth
の2つのカスタム値のみを受け入れます.デフォルト値はauto
で、すぐに最後までスクロールすることを示します.smooth
はスムーズスクロールを表します.この属性は、スクロール関数scrollTo
、scrollIntoView
等のデフォルトのスクロール挙動に影響し、scrollTop
、scrollLeft
等のDOM属性変更時のスクロール挙動にも影響する.scroll-behavior
がルート要素()に設定されている場合は、ビューポート(viewport)に適用されます.この場合、アンカーポイント、インナーチェーンがトリガするビューポートのスクロールにも有効です.だからhtml要素にスタイル
scroll-behavior: smooth
を設定するだけで内鎖をクリックするとページのスムーズなスクロールがトリガーされ、簡単でしょう.scrollIntoView
scroll-behavior
は、スクロール関数を指定するデフォルトの動作であり、scrollIntoView
を含む.名前の通り:この関数は、ある要素をウィンドウの表示領域にスクロールします.ブール値またはオブジェクトの2つの形式の値を受け入れます.ブール値を受け入れるのは、スムーズスクロール(旧版)がサポートされていないブラウザと互換性があるためです.ここでは対象値だけを話します.
{
behavior: "auto" | "instant" | "smooth", // auto
block: "start" | "center" | "end" | "nearest", // center
inline: "start" | "center" | "end" | "nearest", // nearest
}
オブジェクトには3つのパラメータがあります.
behavior
はスクロール方式を表す.auto
は、現在の要素を使用するscroll-behavior
スタイルを表します.instant
およびsmooth
は、
および
を表す.block
は、ブロックレベル要素の配列方向がスクロールされる位置を示す.デフォルトのwriting-mode: horizontal-tb
では、垂直方向です.start
は、ビューポートの上部と要素の上部を位置合わせすることを示します.center
は、ビューポートの中央と要素の中央を位置合わせすることを示す.end
は、ビューポートの下部と要素の下部を位置合わせすることを示します.nearest
は、近接位置合わせを示します.inline
は、行内の要素の配列方向がスクロールされる位置を示す.デフォルトのwriting-mode: horizontal-tb
では、水平方向です.その値はblock
と類似している.例
https://codepen.io/CarterLi/p...
残念なことに、現在はブラウザのサポートが不十分です.一方、
scroll-behavior
はCSS属性としてpolyfill
にはならない.scrollIntoView
はJavaScript関数としてpolyfill
に友好的です.現在の状況では、scrollIntoView
にpolyfillを加える方式が推奨されている