LoginSignup
11
13

More than 5 years have passed since last update.

チャットなどでメッセージが一番下に追加されたときの自動スクロール

Last updated at Posted at 2014-05-31

Twitter は新しいメッセージが上に追加される。

個人的にはこの仕様は直感的ではない。
と言うのも、僕は古いメッセージから順番に追っていく場合、上に古いメッセージがあって、それを下に追っていく派の人間だからである。

てなわけで、上に古いメッセージが残っていて、下に新しいメッセージが追加されるようなチャットの UI を作ってみた。

メッセージの追加とともに自動スクロールする ver.
http://jsfiddle.net/itomaki/dhjhD/

メッセージの流れ方は、LINE と Twitter のターゲットの相違がある??

上に古いメッセージが溜められ、下に新しいメッセージが追加されることを「古い順に追加」とでも呼ぶことにするか。。

LINE は「古い順に追加」
Twitter は「新しい順に追加」
2ch は「新しい順に追加」
...

LINE は、「会話」をターゲットとするアプリだから、「古い順に追加」なのかもしれない。
「会話」は、どういった経緯でいまの話題になったのか?ということの流れが分からないと噛み合ない。だからユーザは必ず過去の話を参照する必要に迫られる。このとき、「古い順に追加」だと、現在の話題に至るまでの過去の流れを把握しやすい。。ということじゃないかなぁ(<-- 完全に想像)

対して、Twitter や 2ch は「言い逃げ、憂さ晴らしの捨て台詞、ステマ」みたいなものをターゲットとするアプリだから、過去に何を言っていようが、バトンが渡された側はあまり関係ないんだよね。たぶん。(<-- ただの素人の意見です。間違っていたらすいません)

実装上の違い

「新しい順に追加」の場合は、一番上に新しいメッセージが追加されるだけなので、追加されたメッセージの高さだけページが長くなるだけ。ユーザは自発的にスクロールしなくても、新しいメッセージを閲覧できる。

ところが、「古い順に追加」の場合は、一番下に新しいメッセージが追加されるため、この新しいメッセージを閲覧するためには、ユーザは自発的にページを下にスクロールする必要がある。

自動的にスクロールする機能を入れてやればOK。

まとめ

言いたかったことは、わりと小さな工夫(追加する領域の高さだけ下にスクロール)をするだけで、「新しい順に追加」のときに自動スクロールすることができる。ってことです。

position: fixed をうまく使うことも、わりと重要なポイントかもね。

11
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13