/ / jQuery-divをoverflow-yでスクロール:scroll; -jquery、css3、使いやすさ

jQuery - overflow-yを使ったスクロールdiv:scroll; - jquery、css3、ユーザビリティ

メッセージのリストを含むdivがあります(チャットルームアプリケーション)。各メッセージがリストの一番下に追加されると、 思う divをページの一番下までスクロールするようにします。それは理にかなっていますよね?だから-質問#1:divを下にスクロールするにはどうすればいいですか?

さて、次の質問は使いやすさについてです。 ユーザーがスクロールして、以前に投稿されたものを読むとどうなりますか?その後、突然誰かが新しいメッセージを投稿しますか?つまり、jQueryは再び下にスクロールします。これは、ユーザーを非常に苛立たせる可能性があります。これを処理するための良い方法は何ですか?新しいメッセージが追加される前にスクロールバーが既に一番下までスクロールされている場合にのみ下にスクロールする必要がありますか?そうであれば、jQueryでそれを行う方法は?

回答:

回答№1は2

スクロールバーの位置を取得するには window.pageYOffset 使用して window.scrollTo(0, y) ある場所までスクロールします。

またはあなたも使用することができます $("#mydiv").scrollTop(newmsg_top) jqueryで新しいメッセージまでスクロールダウンします。

どこで var newmsg_top = parseInt($("#mydiv li:last").offset().top);

ここに #mydiv すべてのメッセージを含むdivです。
そう #mydiv li:last 最後のメッセージを指します。
offset() ドキュメントに対する要素の現在の位置を返します。トップ位置を取得するには .top

代わりに親に対する相対的な位置が必要な場合は、 position()

編集: ここでjsfiddleを手に入れました ここに。見てください。</ strong> 注:最後の要素を表示している場合にのみダウンします(ユーザビリティの問題の解決のため)


回答№2の場合は1

//これは追加後、最後までスクロールします

$("#mydiv").append("My data");
var newmsg_top = parseInt($("#mydiv")[0].scrollHeight );
$("#mydiv").scrollTop(newmsg_top);