ログメッセージの表示に使用するコンテナdiv
があります。それが生成されるとき、私はそれぞれのメッセージを独立した子としてdiv
要素の前に追加します。 div
はoverlay-y:auto
に設定され、メッセージ要素が親コンテナの高さを超えた後にスクロールします。私が作成しようとしている動作は、メッセージがスクロールしない/スクロールしないメッセージの「履歴」をスクロールして親の可視領域から移動する場合を除いて、メッセージが通常どおりスクロールすることです。div
メッセージリストの先頭に追加されます。divを挿入しているときにスクロール位置を保持します(ユーザーがスクロールしたときのみ)
私の現在の試みは、次のようになります。
HTML:
<div id='log'>
<h4>Log</h4>
<div id='log-rows'></div>
</div>
JS:
log: function(text) {
var messageHTML = "<div><span class='timestamp'>" + (new Date()).toISOString() + "</span> - <span class='message'>" + text + "</span></div>";
this.$el.find("#log-rows").prepend(messageHTML);
var firstLogMessage = $('#log-rows').children().first();
$('#log-rows').children().each(function(index, row) {
row.scrollTop += firstLogMessage.height();
});
...
}
CSS:
#log-rows {
max-height: 250px;
overflow-y: auto;
}
どのようにユーザーは「画面をスクロールできますか? –
@RacilHilan:良い点、私の言語は明確ではありませんでした。基本的には、私がスクロールしたdivを親の子供に新しい行を追加するときに動かすことは望ましくありません。 –