ios11 input和fixed的不兼容(光标错位)

本文介绍了解决iOS11中fixed定位输入框点击输入时光标和输入框位置错位的问题,通过将定位改为absolute,动态调整弹出框top值,阻止页面滚动并处理触摸事件来确保输入体验。

在ios11的的手机里 ,一个弹出输入框是fixed定位的话,点击输入 会发下光标和输入框的位置错位,导致无法输入。
1.把fixed定位改成absolute的定位
2.监听弹出框的时候页面滚动的高度,动态设置弹出框的top值

var initTopH = function() {
			var tempH = $(".van-dialog").height(); //弹框高度
			var screenH = $(window).height(); //手机屏幕高度
			var scrollH = $(document).scrollTop(); //文档滚动高度
			var topH = scrollH + (screenH - tempH) / 2; //top值高度
			//解决当输入键盘未手动关闭时,弹窗的定位问题
			if ($(document).height() - scrollH < screenH) {
				topH = $(document).height() - screenH + (screenH - tempH) / 2;
			}
			return topH;
		};

3.弹出框弹出后阻止页面的滚动,给body加上class

var handler = function(e) {
			e.preventDefault();
			e.stopPropagation();
		}
<style>
.van-overflow-hidden{
	overflow:hidden;
	height:100%;
}
</style>
document.getElementsByTagName('body')[0].addEventListener('touchmove', this.handler, {
		passive: false
	});
	document.getElementById("van-overlay").addEventListener('touchmove', this.handler, {
		passive: false
	});
	$("body").addClass("van-overflow-hidden");//

4.以上设置后发现在ios手机里面有些机型,页面还是会滚动 我在遮罩层上加了touchmove事件,直接关闭弹出框

$('#van-overlay').on("touchmove",function(e){
					e.stopPropagation();
					_self.codeShow=false;
				})
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值