今天写完项目测试时忽然发现ios系统input框获取焦点激活软键盘弹起后点击空白处软键盘怎么都不下去,最后发现原来是点击空白处input框根本就没有失去焦点的问题;而后放在android系统下测试并不存在此问题。css
解决方案:手动添加程序监听input的获取与失去焦点事件,获取焦点时绑定touchend事件,当touchend事件触点在空白处让其input框失去焦点便可html
objBlurFun("input"); //若是不是当前触摸点不在input上,那么都失去焦点 function objBlurFun(sDom,time){ var time = time||300; //判断是否为苹果 var isIPHONE = navigator.userAgent.toUpperCase().indexOf("IPHONE")!= -1; if(isIPHONE){ var obj = document.querySelectorAll(sDom); for(var i=0;i<obj.length;i++){ objBlur(obj[i],time); } } } // 元素失去焦点隐藏iphone的软键盘 function objBlur(sdom,time){ if(sdom){ sdom.addEventListener("focus", function(){ document.addEventListener("touchend", docTouchend,false); },false); }else{ throw new Error("objBlur()没有找到元素"); } var docTouchend = function(event){ if(event.target!= sdom){ setTimeout(function(){ sdom.blur(); document.removeEventListener('touchend', docTouchend,false); },time); } }; }
1)移动端原本自信满满,正得意本身完美的布局时,每每却被弹起的软键盘而打乱。此次项目中碰见fixed定位的返回主页按钮在软键盘升起时因可视界面被压缩致使fixed定位的元素布局错乱android
解决方案:因软键盘从下方弹起,因此咱们能够把fixed定位的元素相对顶部定位就能够避免此问题了ios
2)常见状况:底部footer采用fixed定位在最底处,安卓机软键盘弹起时将底部footer也随之顶起web
解决方案:chrome
1.设定body的高度始终为软键盘弹起前的可视界面高度浏览器
$('body').height($('body')[0].clientHeight);
2.将footer布局由fixed定位改成absolute定位,并且是相对body定位的dom
body{ position:relative } footer{ position:absolute; left:0; right:0; bottom:0; }
规范中规定若是元素的transform值不为none,则该元素会生成包含块和层叠上下文,使其fixed定位、absolute定位元素和层叠上下文(index)受到影响iphone
解决方案:不要将fixed定位的元素放在拥有transform属性的元素内部
移动端当内容超出固定高度容器出滚动条时,在安卓手机下滚动条样式较粗,很是难看,在苹果手机下没有滚动条,同时滚动时有阻塞感,滑动不畅;
解决方案:使用第三方组件如:iscroll、mui等
由于chrome浏览器使用的为webkit内核,添加如下代码便可:
html { -webkit-text-size-adjust:none }
img{ display:block; }
起因:间隙因为换行或者回车产生空白符所致
方法一:
1)给父元素设置font-size:0;
2) 给inline-block元素设置实际须要的字体大小
方法二:
将元素写在一排显示
<ul> <li>111</li> <li>222</li> <li>333</li> <li>444</li> <li>555</li> <li>666</li> </ul>
ul{ font-size:0 } li{ font-size:12px; }