こんにちは。
スクロールの開始位置を常に一番下に設定したい場合ってありますよね。
例えば、ラインのようなメッセージのやり取りができるプラットフォームを作る場合、
常に一番下に最新メッセージを表示させたい、とか。
そういった場合に役に立つ方法があったので紹介します。
scrollIntoView()を使う
これです。
まずはコードを書いてみましょう。
HTML
<div class="scroll">
<div id="scroll-inner">
<!-- ここにコンテンツ-->
</div>
</div>
CSS
.scroll{
overflow-y: scroll;
height: 300px;
}
#scroll-inner{
height: 600px;
}
JavaScript
let target = document.getElementById('scroll-inner');
target.scrollIntoView(false);
解説
scrollIntoView()のポイントは、指定した要素の上端または下端までスクロールするということです。
scrollIntoView(true)なら上端まで、scrollIntoView(false)なら下端までとなります。
scroll()との違い
scroll()はoverflow-y: scroll;を指定した要素に対して使いますが、scrollIntoView()はその子要素に対して使用します。
scroll()を使っても同じことはできますが、scroll()はEdgeではエラーになるというデメリットもあります。

