【发布时间】:2017-04-28 22:40:02
【问题描述】:
这是我目前拥有的: https://jsfiddle.net/Lt4cmfbo/
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,你可以使用 Scroll 并在滚动事件中保存滚动位置,然后当用户按下“Enter”时滚动回到那里
-
问题在于,我希望它在用户点击“输入”之前准确地保持在原来的位置。话虽这么说,你已经给了我一个关于如何用 jquery 解决这个问题的想法......但我想知道是否有更清洁的解决方案?当我最初搞砸这个时,我在“childTwo”类中添加了一个最小高度。这实际上阻止了顶部的孩子滚动(以我想要的确切方式),但它弄乱了底部 div 的外观,所以我无法保留它。
-
我想这个答案解决了它(如何让滚动保持在底部):stackoverflow.com/a/34330934/2827823 .... 让我知道如果是这样,我把它作为一个骗子关闭
-
是的!!!这正是我所需要的。太感谢了! @LGSon
标签: javascript jquery html css