は、私が現在持っているものです。 https://jsfiddle.net/Lt4cmfbo/兄弟divが縮小または拡大するにつれてdivのスクロール位置を保持しますか?ここで
CSS
.parent {
position: relative;
float: none;
height: 400px;
width: auto;
background: purple;
overflow: hidden;
display: flex;
flex-direction: column;
}
.childOne {
background: blue;
width: 100%;
height: auto;
overflow-y: auto;
flex-grow: 1;
}
.childTwo {
background: red;
}
.input-chat {
background-color: white;
margin: 5px auto;
border: solid 1px #000;
min-height:10px;
max-height: 100px;
overflow: auto;
width: 95%;
}
HTML
<div class="parent">
<div class="childOne">
<p>
content #1
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
hello
</p>
</div>
<div class="childTwo">
<div class="input-chat" contentEditable="true"></div>
</div>
</div>
基本的に、私はチャットを構築しようとしています。親divの内部には、2つの子divがあります。上の1つはスクロール可能(メッセージを表示する)で、下はメッセージを送信するためのものです。
私は両方の子divが常に親divの高さに等しいように高さをコントロールするためにフレックスボックスを使用しています。一番下の子divは下の子divの高さに基づいて拡大または縮小します(これもやっています)。
問題は、高さの変更に合わせてスクロール位置を保持したいということです。私がトップの子divの一番下にスクロールして 'hello'を見ると、私は下のdivに複数の行を入力しているので、まだ 'hello'を見たいと思っています。しかし、代わりに、私が手動でスクロールしてそれを明らかにしない限り、下のdivが隠すように見えます。
私はこれが十分にはっきりしたことを望みますが、そうでない場合は別の方法で説明することができます。
私の答えがCSS(またはCSS3)にあることを期待していますが、それが不可能な場合は、jqueryまたはpure javascriptが問題ありません。
、あなたが使用することができます[スクロール](https://api.jquery.com/scroll /) スクロールイベントのスクロール位置を保存してから、ユーザーが「Enter」を押したときにスクロールします。 – bobjoe
問題は、ユーザーが「Enter」を押す前の位置に正確に残したいということです。つまり、あなたは私にjqueryでこれに取り組む方法を教えてくれました...しかし、もっとクリーンなソリューションがあるのだろうか?私が元々このことをやっていたとき、私は 'childTwo'クラスに最小の高さを追加しました。それは実際に(私がそれが欲しかったのとまったく同じ方法で)スクロールすることからトップの子供を保ったが、私はそれを保つことができなかったので、下のdivの外観を台無しにした。 –
私はこの答えがそれを解決すると思います(下にスクロールを維持する方法):http://stackoverflow.com/a/34330934/2827823 ....私にそれがあるかどうか知らせて、私はこれを偽装として閉じます – LGSon