【发布时间】:2020-01-04 02:49:00
【问题描述】:
我正在开发一个简单的聊天组件,但我遇到了一个问题,在移动设备上,如果我单击文本框发送消息,而不是向上弹出消息列表,虚拟键盘反而会自行定位在它之上。
这是不可取的,因为我希望用户在输入消息时能够看到最新消息。但是,我无法弄清楚如何纠正这种行为。 (我不能将文本框放在 messages div 中,因为它应该始终位于底部)
我创建了一个演示 the problem here 的示例 sn-p(添加底部边距与单击文本框并弹出移动键盘相同的问题)
基本上,如果您滚动到底部并单击“添加边距”按钮,您会看到它不是将内容推到它上面,这样您仍然可以看到最新消息,而是向上滚动。有什么办法可以避免吗?
这是代码的副本,以防小提琴出现故障:
<div class="container">
<div class="messages">
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
<div class="message">hello</div>
</div>
<div class="send-message">
<input />
</div>
</div>
<button onclick="test()">add margin</button>
.container {
width: 400px;
height: 300px;
border: 1px solid #333;
display: flex;
flex-direction: column;
}
.messages {
overflow-y: auto;
height: 100%;
}
.send-message {
width: 100%;
display: flex;
flex-direction: column;
}
.some-margin {
margin-bottom: 100px;
}
function test() {
document.querySelector(".send-message").classList.toggle("some-margin")
}
【问题讨论】:
标签: javascript android html css