hack のためのネタ帳, etc,,,

やりたい事

DOM から任意の Element を拾って来て、その Element まで Scroll させたい。

方法

要素 スクロール」で検索したところ以下のページを見つけた。

Element.getBoundingClientRect() でビューポート左上を基準とした top, left の値が得られるので、これに window.pageXOffset, Window.pageYOffset (Page 左上から ViewPort までの offset)を加えれば、ページ左上を基準とした Element の top, legt が得られるとので、あとは、window.scroll() 等のメソッドに放り込めば目的の位置までスクロールするとの事。

例えば以下のようにすると #hoge までスクロールする。
let selector = "#hoge";
let e = document.querySelector(selector);
let rect = e.getBoundingClientRect();
let x = rect.left + window.pageXOffset;
let y = rect.top  + window.pageYOffset;
scroll({top: y, left: x, behavior: "smooth"});

behavior は "smooth" だとスムーススクロール、"auto", "instant" だと瞬時に移動するらしい。デフォルトは "auto" との事。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます