【Edge対応】スクロールの開始位置を常に一番下に設定する方法

JavaScript

こんにちは。

スクロールの開始位置を常に一番下に設定したい場合ってありますよね。
例えば、ラインのようなメッセージのやり取りができるプラットフォームを作る場合、
常に一番下に最新メッセージを表示させたい、とか。

そういった場合に役に立つ方法があったので紹介します。

スポンサーリンク

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ではエラーになるというデメリットもあります。

タイトルとURLをコピーしました