← 動的パーツギャラリーへ戻る

パーツ番号 10-06-08 ・ JavaScript使用

チャット履歴スクロール自動追従

新しいメッセージが追加されるたびに自動で一番下までスクロールする挙動。長いAI会話ログの表示に必須の動きです。

scrollautojs

プレビュー

ソースコード

HTML

<div class="d10-06-08-wrap">
          <div class="d10-06-08-scroll">
            <div class="d10-06-08-msg d10-06-08-me">導入方法を教えてください</div>
            <div class="d10-06-08-msg d10-06-08-ai">まずプラグインをインストールします。</div>
            <div class="d10-06-08-msg d10-06-08-me">ありがとうございます</div>
          </div>
        </div>

CSS

.d10-06-08 .d10-06-08-wrap{width:100%;max-width:220px}
        .d10-06-08 .d10-06-08-scroll{height:150px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:4px;scroll-behavior:smooth}
        .d10-06-08 .d10-06-08-scroll::-webkit-scrollbar{width:4px}
        .d10-06-08 .d10-06-08-scroll::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:2px}
        .d10-06-08 .d10-06-08-msg{max-width:82%;padding:8px 12px;border-radius:12px;font-size:11.5px;line-height:1.6}
        .d10-06-08 .d10-06-08-me{align-self:flex-end;background:#6366f1;color:#fff;border-bottom-right-radius:3px}
        .d10-06-08 .d10-06-08-ai{align-self:flex-start;background:#f1f2f6;color:#374151;border-bottom-left-radius:3px}

JavaScript

(function(){
          var root = document.currentScript.closest('.item');
          var scroll = root.querySelector('.d10-06-08-scroll');
          var msgs = ['承知しました、対応します。', 'こちらが回答になります。', '他にご質問はありますか?', 'はい、お願いします。', 'ありがとうございます!'];
          var i = 0;
          setInterval(function(){
            var div = document.createElement('div');
            div.className = 'd10-06-08-msg ' + (i % 2 === 0 ? 'd10-06-08-ai' : 'd10-06-08-me');
            div.textContent = msgs[i % msgs.length];
            scroll.appendChild(div);
            if(scroll.children.length > 6){
              scroll.removeChild(scroll.firstElementChild);
            }
            scroll.scrollTop = scroll.scrollHeight;
            i++;
          }, 2200);
        })();

クラス名 .d10-06-08 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。