質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1477閲覧

Bootstrapを使ってチャットっぽいCSSデザインについて知りたい。

nanase21

総合スコア144

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2019/08/19 01:19

サンプルコード
Codepen

#実現したいこと
LINEやSlackみたいに、最新のメッセージが一番下に来るようにしたい。

#困っていること
メッセージ量が多くなると、自然にbottom:0;付近に最新のメッセージが来るようになるが、2,3件しかメッセージがない時に、bottom: 0;の位置にメッセージを置くことが出来ずに困っている。

#試したこと
position: abosolutebottom:0;を明示的に書くことによってしたいにメッセージが来るようにはなるが、そうするとメッセージが溜まってきたときにスクロールが出来なくなってしまいます。
週末かけて、いろいろ私なりに調査しながら試してみましたがどうしてもうまくいかずにいるのでご教示いただけると幸いです。

html

1<body> 2 <div class="container area bg-light"> 3 <div class="messages">hoge</div> 4 <div class="messages">これをbottom: 0の位置にくるようにしたい</div> 5 </div> 6</body> 7</html>

css

1.area { 2 height: 50vh; 3 overflow: auto; 4}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/08/19 01:45

設定によるのかもしれないですけど、LINEってスクロールするまでもないときって画面下側に詰まってないですよね。あくまで「最上部が一番古いメッセージでその下に積み重なっている(要は投稿日時昇順)」だけだと思うのですけど。
nanase21

2019/08/19 01:59

今確かめてみたところ確かにそうでした。 他のチャット機能でも確かめてみたところの同じ仕様だったのでこの質問は必要ないかもしれないので閉じさせていただきます。 ご指摘ありがとうございました。
m.ts10806

2019/08/19 02:03

こちらのコメント欄は非表示ですので、 回答には具体的に記載されたほうが良いと思います(仕様的なところを見直す・・・という感じですよね)
guest

回答2

0

ベストアンサー

jQuery使います。

HTML

1<body> 2 <div class="container area bg-light" id="hoge"> 3 <div class="messages">hoge</div> 4 <div class="messages">これをbottom: 0の位置にくるようにしたい</div> 5 </div> 6</body> 7</html>

CSS

1.area { 2 height: 50vh; 3 overflow-y: scroll 4}

JavaScript

1window.onload = function() { 2 $('#hoge').animate({scrollTop: $('#hoge')[0].scrollHeight}, 'fast'); 3}

JavaScriptのタイミングは適当に変えてください。

追記

比較演算子の調整が必要かも

HTML

1<body> 2 <div class="container area bg-light" id=hoge> 3 <div id=messages> 4 <div class="message">hoge</div> 5 <div class="message">hoge</div> 6 <div class="message">hoge</div> 7 <div class="message">hoge</div> 8 <div class="message">hoge</div> 9 <div class="message">hoge</div> 10 <div class="message">hoge</div> 11 <div class="message">hoge</div> 12 <div class="message">hoge</div> 13 <div class="message">hoge</div> 14 <div class="message">hoge</div> 15 <div class="message">hoge</div> 16 <div class="message">hoge</div> 17 <div class="message">hoge</div> 18 <div class="message">hoge</div> 19 <div class="message">hoge</div> 20 <div class="message">hoge</div> 21 <div class="message">hoge</div> 22 <div class="message">hoge</div> 23 <div class="message">hoge</div> 24 <div class="message">hoge</div> 25 <div class="message">hoge</div> 26 <div class="message">hoge</div> 27 <div class="message">hoge</div> 28 <div class="message">hoge</div> 29 <div class="message">hoge</div> 30 <div class="message">hoge</div> 31 <div class="message">hoge</div> 32 <div class="message">hoge</div> 33 <div class="message">hoge</div> 34 <div class="message">hoge</div> 35 <div class="message">hoge</div> 36 <div class="message">hoge</div> 37 <div class="message">hoge</div> 38 <div class="message">これをbottom: 0の位置にくるようにしたい</div> 39 </div> 40 </div> 41</body>

CSS

1.area { 2 height: 50vh; 3 overflow-y: scroll 4}

JavaScript

1window.onload = function() { 2 var aH = window.innerHeight / 2; 3 var mH = $('#messages').outerHeight(); 4 if (mH<aH) { 5 var offset = $('#messages').offset({top:aH-mH}); 6 } else { 7 $('#hoge').animate({scrollTop: $('#hoge')[0].scrollHeight}, 'fast'); 8 } 9}

両方要jQuery
思いつき等々で書いたのでもっといい書き方あるかもしれません。

投稿2019/08/19 02:12

編集2019/08/19 02:46
kyoya0819

総合スコア10429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyoya0819

2019/08/19 02:12

失敬。解決してましたか
kyoya0819

2019/08/19 02:16

質問文読み間違えてました。修正しますので上のコードは気にしないでください。
nanase21

2019/08/19 02:21

ご教示いただきありがとうございます。 質問の指摘で、LINEなどは私の意図していた仕様になっていないとご指摘を受けたため、質問を閉じさせていただきました。 せっかくご教示いただいたにもかかわらず大変申し訳ございませんでした。
kyoya0819

2019/08/19 02:24

一応、同じ疑問を持つ方のために修正させていただきます。 こちらこそ、解決しているのに謝って回答を投稿してしまいました。申し訳ございません。
nanase21

2019/08/19 02:28

いえいえ。 私の疑問自体は解決しましたが、質問の趣旨に対してもしお分かりであればご修正頂けると私の勉強にもなりますので、ご教示いただけると幸いです。
guest

0

質問の趣旨が修正依頼で解決できたので閉じさせていただきます。

投稿2019/08/19 02:00

nanase21

総合スコア144

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問