最近在项目中遇到一个坑,移动端中一个页脚写了fixed属性,在input输入弹出虚拟键盘时,这个fixed错位了。各种搜索,各种烦后来才解决。这里和大家一起分享下。
首先说下坑,其实移动端是不建议使用fixed属性的,但是因为是填坑,不用这个属性很多东西要重写,而且正好最近也学点东西,就只要硬着头皮保留了。
下面说下思路:因为是输入的时候出现的问题,可以在输入时改变fixed属性为static,于是用到focus事件。
$('#telephone').bind("focus",function(){ $(".div_ft").css({"position":"static","bottom":0}); }).bind("blur",function(){ $(".div_ft").css("position","fixed"); });
然后发现在屏幕翻转的时候还是不行,于是还要加入屏幕翻转监听事件。
// 判断屏幕是否旋转 $(window).bind("onorientationchange",function(){ switch(window.orientation) { case 0: $('.weui-foter').css({'position':'fixed','bottom':'0'}); break; case -90: $('.weui-foter').css({'position':'static'}); break; case 90: $('.weui-foter').css({'position':'static'}); break; case 180: $('.weui-foter').css({'position':'fixed','bottom':'0'}); break; } });