美文网首页
解决移动端虚拟键盘扰乱布局问题

解决移动端虚拟键盘扰乱布局问题

作者: babulongbo | 来源:发表于2018-07-26 16:06 被阅读0次

做移动端开发时总会遇到这样的问题:
在某些Android机上点击输入框时页面的的布局错乱,字体变小,输入框被遮挡等问题。
问题的原因(个人见解):
在出问题的手机浏览器上虚拟键盘不是以浮层的形式显示,而是以一个占据页面空间的div显示,因为虚拟键盘要占据空间,则你的内容页面的高度就会减少,所以如果你的适配里面有关于高度适应的字体设置,则需要进行修改。你的网页像是一个iframe一样嵌入到到当前的窗口而虚拟键盘就是和这个iframe同一级,所以你使用fixed定位弹窗,还有底部导航等等会被顶上去。
解决的方案:
解决字体的样式:如果你的字体没有高度适配,一般不会有问题,如果有,你需要覆盖适配的样式,用js改变即可。
adaptive: function() { //页面适配问题
var htmlObj = document.querySelector('html') || document.getElementsByTagName('html')[0] || document.body;
var MOBILE_BASE_SEIZE = 20;
try{
if (!htmlObj) {
throw new Error('Get the html element error!');
}
let client_w = htmlObj.clientWidth,
baseFontSize = 18.75;
baseFontSize = client_w/MOBILE_BASE_SEIZE;
htmlObj.style.fontSize = baseFontSize + 'px';
} catch (e) {
console.log('function adaptive error:', e);
}
}

虚拟键盘会触发onresize事件时,所以在resize事件中再调用一次

解决布局错乱问题:这是因为高度减小导致的,所以先保存当前页面的高度,当虚拟键盘出现时,会触发onresize事件,所以将布局高度强制设置为原始高度即可。

解决input被遮挡问题:
//输入框鼠标聚焦事件
var input =('.raffle .share_guide input');
.each(input,function (i, input) {
console.log((input[i]));
(input[i]).focus(function () {
var timer = setTimeout(function () {
var dialog = document.getElementById('registDialog');
dialog.scrollIntoView(true);
dialog.scrollIntoViewIfNeeded();

}, 200);
});
});
最重要的是:scrollIntoView 和 scrollIntoViewIfNeeded事件,具体使用自己百度。
建议最好使用rem或%作为单位。

相关文章

  • 解决移动端虚拟键盘扰乱布局问题

    做移动端开发时总会遇到这样的问题:在某些Android机上点击输入框时页面的的布局错乱,字体变小,输入框被遮挡等问...

  • 移动端布局rem解决方案

    移动端布局rem解决方案

  • 虚拟键盘,移动web开发的痛

    原生APP的弹出虚拟键盘和收回虚拟键盘,输入框始终贴在虚拟键盘的上方。如下图: 如果移动端web也想做类似的功能,...

  • 移动端 h5 界面软键盘搜索功能实现

    问题描述: 移动端搜索框输入文字后,点击软键盘的搜索,实现搜索功能 解决方法: 对应移动端按键响应事件onkey...

  • 移动端适配

    移动端适配主要为了解决设计稿和实际作图的比例对应问题。 移动端响应式布局主要存在两种问题:1.1px边框问题2.像...

  • 移动端虚拟键盘引发的问题分析

    我在工作的过程中无论是与原生结合的Hybird的H5页面或者微信公众号页面都会遇到当触发键盘输入行为时,页面窗口往...

  • viewport与移动端布局

    关于移动端布局,有三个viewport需要了解,这三个viewport的出现是为了解决网页完美适配移动端屏幕的问题...

  • 表情、输入布局辅助View

    解决聊天布局 输入框、键盘弹起、表情布局、其他布局的交互布局变化问题

  • 流式布局 移动端使用开始APP

    流式布局 移动端使用开始APP viewport:是一个虚拟的区域,承载网页(视觉窗口,移动端特有)意思是:写的代...

  • 移动端布局问题

    情景:当容器整个背景是一张背景图片的时候,由于没有高度 也就无法渲染出全部图片, 这种情况可以用height:10...

网友评论

      本文标题:解决移动端虚拟键盘扰乱布局问题

      本文链接:https://www.haomeiwen.com/subject/cnmbmftx.html