javascript - 如何让移动端网页的输入框固定在底部?
本文介绍了javascript - 如何让移动端网页的输入框固定在底部?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
如上图展示,在首页上用户点击输入框,弹出键盘,有时候会把输入框部分遮挡住(如下图)
目前的处理方式是,当输入框获得焦点后,执行resize
$('input').on('focus' , function(){
$(window).resize();
}).on('blur' , function() {
$(window).resize();
});
这么做就是为了重置窗口大小,让本来浮动在底部的输入框,重新定位
但是效果不太好,时而生效,时而失效
像这样的情况应该使用什么方式来更好的处理这个问题?
还有在弹出键盘的同时,滚动页面也能保持让输入区域固定在底部
目前输入框的定位方式是:position:fixed
截图环境:ios 微信端
解决方案
安卓浏览器在软键盘弹出后不会像iOS浏览器那样重新计算window的高度,所以导致安卓浏览器window的高度在软键盘弹出的时候为软键盘的高度+(window的高度-软键盘的高度);而其实,此时,合理的高度应该是页面的高度+软键盘弹出的高度;就此解决方案为如下:
var winHeight = $(window).height(); //获取当前页面高度
$(window).resize(function() {
var thisHeight = $(this).height();
if (winHeight - thisHeight > 50) {
//当软键盘弹出,在这里面操作
//alert('aaa');
$('body').css('height', winHeight + 'px');
} else {
//alert('bbb');
//当软键盘收起,在此处操作
$('body').css('height', '100%');
}
});
如果ios有这个问题
在input 获得焦点 或者 单击事件里面添加
setTimeout(function () {
document.body.scrollTop = document.body.scrollHeight;
}, 500);
使用该方法解决了, 之前也试过让滚动条滚动到底部, 但是无效;现在加了个定时器之后可以了, 定时器时间自己调整, 设置了500ms才不会出现遮挡问题,自己多做下测试吧
这篇关于javascript - 如何让移动端网页的输入框固定在底部?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文