こんにちは、Ryohei(@ityryohei)です!

本記事では、JavaScriptで要素のスクロール位置を最下部に設定する方法をご紹介しています。

要素の高さが変わったときにスクロール位置が常に最下部になるようにしたいんだけど、良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

結論

スクロール位置を要素の最下部に設定する方法は下記の通りです。

const el = document.getElementById('el');
el.scrollTo(0, el.scrollHeight);

1行目で要素を取得し、2行目でscrollHeightにて取得した要素の高さ(画面上に表示されていない部分も含む)を取得し、scrollToでスクロールバーの位置を設定します。こうすることでスクロールの位置を要素の最下部に設定することができます。

スクロールバーの位置を要素の最下部に設定してみる

確認用に作成したデモがこちら。下記デモ内の「リストアイテム追加」のボタンをクリックするとリストに要素が追加され、スクロールバーは常に最下部に表示されます。

See the Pen
Set scrollbar position to bottomJavaScriptt
by ryohei (@intotheprogram)
on CodePen.

ソースは下記の通りです。処理内容につきましては、コメントをご参照いただければと思います。

HTML

<div id="app">
    <ul id="list">
        <li>TEST</li>
        <li>TEST</li>
    </ul>
    <button id="btn" type="button">リストアイテム追加</button>
</div>

JavaScript

const btn = document.getElementById('btn');

btn.addEventListener('click', ()=>{
    //リストを取得
    const list = document.getElementById('list');
    //リストアイテムを挿入
    list.insertAdjacentHTML('beforeend', '<li>ADD ITEM</li>');
    //スクロールバーの位置をリストの最下部に設定
    list.scrollTo(0, list.scrollHeight);
}, false);

最後に

スクロールバーを最下部に設定する方法は、チャットのように処理を追加するものに向いています。同様の処理を実装するい場合に参考にしていただければ幸いです。

以上、JavaScriptでスクロールバーの位置を要素の最下部に設定する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。

JavaScriptを基礎からしっかりと学びたい方へ

下記の参考書がおすすめです。私がJavaScript入門時に購入した書籍で、基礎から応用まで多様なサンプルを用いて解説されています。ページ数は多いですが、内容が伴っているのですらすら読めます。腰を据えて学びたい方に最良の一冊となっています。