画面をスクロールさせる
Tweetちょっと内容正確性が低いです。まだ調査中。
scrollTop
よくある画面を分割して左側にメニューがあるアプリケーションにおいて、左側のメニューがたくさんあってあぶれた部分は、overflow: scroll で表示する、なんていう場合に、overflow: scroll を付与した DOM Element を取得して .scrollTop
するとスクロール量が取れる。また、.scrollTop = value
で指定してあげれば移動する。
scrollTop で overflow
const element = document.getElementById('area')
const scrollPosition = element.scrollTop
console.log(scrollPosition)
element.scrollTop = 200
scroll する div の中のどの位置に要素があるのか取得する
targetElement.offsetTop
で、scroll する div の上から数えてどの高さに対象の element があるのか取得できる。この際注意しなくてはいけないのは、どうやら親要素を遡っていって最初に出てくる static 以外の要素を基準にとるようなので、overflow: scroll にしている div を position: relative にしないといけない。また、間に position: static 以外の要素が挟まっていてはいけないのではないか。
scroll 内にあるコンテンツが、その中で上からどの位置にあるのか取得
const targetGroup = document.getElementById('66group')
const topPos = targetGroup.offsetTop
console.log(topPos)
// 組み合わせて移動
element.scrollTop = topPos
scrollTop のスムース
ブラウザが限られるが(Chrome なら当然 OK)、CSS でスムーススクロールにできる。
scroll-behavior でスクロールできる
.leftMenu {
width: 30%;
background: #ffcf81;
/* fixnakanishi 雑に高さを決めているので注意 */
height: 85vh;
overflow: scroll;
position: relative;
scroll-behavior: smooth;
}