這是我目前有: 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的內部是兩個子div:最上面的一個是可滾動的(用於顯示消息),最下面的是輸入消息發送。
我使用柔性框來控制高度,以便兩個子div總是等於父div高度。底部子div必須根據內容(我已經完成)擴展或縮小,而頂級子div根據底部子div的高度(我也已完成)擴展或縮小。
問題是,我也希望頂部div保持其高度變化的滾動位置。如果我滾動到頂部的子div的底部,並看到'你好',我想仍然看到'你好',因爲我在底部div中輸入了幾行。但是,相反,底部div似乎隱藏它,除非我手動滾動顯示它。
我希望這已經足夠清楚了,但如果不是,我可以試着用其他方式來解釋它。
我希望我的答案是在CSS(或CSS3),但如果這是不可能的,jQuery或純JavaScript是好的。
如果你正在使用jQuery OK,你可以使用[滾動](https://api.jquery.com/scroll /) 然後在滾動事件中保存滾動位置,然後在用戶按「Enter」時滾動回到那裏 – bobjoe
問題在於,我希望它甚至在用戶點擊「輸入」之前就保持在它所在的位置。這就是說,你給了我一個想法,以如何解決這個與jquery ......但我想知道是否有一個更清潔的解決方案?當我最初搞砸這個時,我給「childTwo」班增加了一個最小高度。這實際上保持了頂級孩子的滾動(以我想要的確切方式),但它弄亂了底部div的外觀,所以我無法保留它。 –
我想這個答案解決了它(如何使滾動停留在底部):http://stackoverflow.com/a/34330934/2827823 ....讓我知道如果它確實,我把它作爲一個騙局 – LGSon