【发布时间】:2020-01-09 01:42:51
【问题描述】:
我正在开发一个聊天,它可以在桌面上运行,但在移动设备上运行,当您选择文本框并自动打开虚拟屏幕键盘时,屏幕键盘似乎会覆盖自身(类似于 position:fixed 在消息 div 上,而不是比撞它。
基本上,消息 div 应该保持其滚动位置而不是调整。如果您可以看到最新消息,您仍然会看到最新消息。如果只能看到第二条最新消息,同样打开键盘后应该可以看到。
这是一个完整的 JSFiddle 演示,演示了该问题。
window.onload = function(e){
document.querySelector(".messages").scrollTop = 10000;
}
function test() {
document.querySelector(".mobile-keyboard").classList.toggle("show")
}
.container {
width: 400px;
height: 250px;
border: 1px solid #333;
display: flex;
flex-direction: column;
}
.messages {
overflow-y: auto;
height: 100%;
}
.send-message {
width: 100%;
display: flex;
flex-direction: column;
}
.mobile-keyboard {
display: none;
height: 100px;
background-color: #ccc;
}
.show {
display: block;
}
<div class="container">
<div class="messages">
<div class="message">hello1</div>
<div class="message">hello2</div>
<div class="message">hello3</div>
<div class="message">hello4</div>
<div class="message">hello5</div>
<div class="message">hello6</div>
<div class="message">hello7</div>
<div class="message">hello8</div>
<div class="message">hello9</div>
<div class="message">hello10</div>
<div class="message">hello11</div>
<div class="message">hello12</div>
<div class="message">hello13</div>
<div class="message">hello14</div>
<div class="message">hello15</div>
<div class="message">hello16</div>
<div class="message">hello17</div>
<div class="message">hello18</div>
<div class="message">hello19</div>
<div class="message">hello20</div>
</div>
<div class="send-message">
<div class="mobile-keyboard"></div>
<input />
</div>
</div>
<button onclick="test()">show keyboard</button>
我相信这应该可以通过仅编辑 HTML 和 CSS 来完成,但我一直无法弄清楚。我更喜欢 CSS 方法,但强大的 JavaScript 也应该可以工作。
该解决方案不应编辑 mobile-keyboard 的 CSS,因为据我所知无法进行编辑。我在那里创建的 div 替代了当您选择文本框时会自动出现在移动设备上的真实键盘(它对外观的影响与常规移动键盘相同,因为它不会碰撞内容)
【问题讨论】:
-
我不确定,但我认为您无法控制移动设备弹出键盘的位置
-
那么,每个应用程序是如何做到的呢?我使用的所有消息传递网站/应用程序都没有在移动设备上出现此问题,因此他们一定是通过某种方式解决了这个问题。
-
这是您创建的移动应用程序,还是您指的是移动设备浏览器中的常规网页?
-
这是一个在移动设备上通过 Chrome 浏览器查看的常规网页。
-
是的,我得到了你想要的。如果您总是想滚动到底部,请在按下键盘按钮时使用 javascript 滚动到底部
标签: javascript android html css mobile