移动端键盘弹出影响布局解决方法

安卓端:安卓中,如果将footer元素设置为position:fixed或absolute,因为软键盘会改变页面的高度(将页面顶上来),因此footer元素也跟着移动上来,导致页面变形;
IOS端:苹果的软键盘是覆盖的(分层),因此H5页面显示没有什么问题。

方法1:将元素设置成static或者relative,不要脱离文档流。
因为使用fixed或者absolute,会使得元素跟随body的底部移动,而安卓端软键盘将导致body高度变小而导致变形。

方法2:若想设置成absolute,则可以通过js固定其父级元素(如body或者父级div)的高度
例如1:设置元素高度时以px为单位设置,不要以%或vh为单位
若需动态适应不同手机屏幕高度(以px为单位),可以在页面渲染时用js获取屏幕高度,经过计算后得出元素的高度
let Height = window.innerHeight - 160;
$(‘div’).height(Height);
例如2:写个监听resize事件(浏览器窗口大小调整时触发)
let Height = $(‘body’).height();
$(window).resize(function() {
$(‘body’).height(Height);
});
当键盘弹出的时候,固定body高度不变。
注:不要设置成fixed

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
移动键盘事件通常会影响页面布局和用户交互。因此,监听键盘事件是很有必要的。下面是一些实现方法: 1. 使用focus和blur事件 在移动,当用户点击一个可编辑的元素时,浏览器会自动键盘。因此,我们可以通过监听元素的focus和blur事件来确定键盘是否。 示例代码: ```javascript var inputElement = document.getElementById('input'); inputElement.addEventListener('focus', function() { // 键盘事件 }); inputElement.addEventListener('blur', function() { // 键盘收起事件 }); ``` 2. 使用resize事件 当键盘时,窗口的大小会发生改变。因此,我们可以通过监听窗口的resize事件来确定键盘是否。 示例代码: ```javascript window.addEventListener('resize', function() { var windowHeight = window.innerHeight; var documentHeight = document.documentElement.clientHeight; var keyboardHeight = windowHeight - documentHeight; if (keyboardHeight > 0) { // 键盘事件 } else { // 键盘收起事件 } }); ``` 3. 使用CSS样式 在移动键盘时通常会改变页面的布局。因此,我们可以通过CSS样式来检测键盘是否。 示例代码: ```css @media screen and (orientation: portrait) { /* 竖屏布局 */ .keyboard-show { height: calc(100vh - 216px); } } @media screen and (orientation: landscape) { /* 横屏布局 */ .keyboard-show { height: calc(100vh - 162px); } } ``` 在上面的示例中,我们使用@media查询来检测屏幕方向,并根据键盘的高度来调整页面布局。当键盘时,我们可以通过JavaScript来添加.keyboard-show类,从而触发页面布局的改变。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值