移动端常见问题及解决方案

移动端常见问题及解决方案

转载来源: 益享天开  >>  手机移动端web前端常见问题整理

 一 、meta基础知识
  1. H5页面窗口自动调整到设备宽度,并禁止用户缩放页面<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,
  2. maximum-scale=1.0,user-scalable=no" /> 
  3. 忽略将页面中的数字识别为电话号码                                                                                                              <meta name="format-detection" content="telephone=no" /> 
  4. 忽略Android平台中对邮箱地址的识别                                                                                                          <meta name="format-detection" content="email=no" />  
  5. 当网站添加到主屏幕快速启动方式,可隐藏地址栏,仅针对ios的safari                                                                         <meta name="apple-mobile-web-app-capable" content="yes" />  
  6. 将网站添加到主屏幕快速启动方式,仅针对ios的safari顶端状态条的样式                                                                  
 
使用总结:ios 有拍照、录像、选取本地图片功能,部分android只有选取本地图片功能,winphone不支持
 
微信浏览器用户调整字体大小后页面矬了,怎么阻止用户调整?
原因
Anroid则是复写了layoutinflater 对textview做了统一处理
Ios则是修改了body.style.webkitTextSizeAdjust值
普通解决方案:android暂无方案
ios使用-webkit-text-size-adjust禁止调整字体大小
 
  
  1. body{-webkit-text-size-adjust: 100%!important;} 
最好的解决方案:整个页面用rem或者百分比布局
消除transition闪屏
 
  
  1. .css{ 
  2. /*设置内嵌的元素在 3D 空间如何呈现:保留 3D*/ 
  3. -webkit-transform-style: preserve-3d; 
  4. /*(设置进行转换的元素的背面在面对用户时是否可见:隐藏)*/ 
  5. -webkit-backface-visibilityhidden
 
开启硬件加速,解决页面闪白,保证动画流畅
 
 
  
  1. .css {  
  2.    -webkit-transform: translate3d(000);  
  3.    -moz-transform: translate3d(000);  
  4.    -ms-transform: translate3d(000);  
  5.    transform: translate3d(000);  
  6. }  
参考《用CSS开启硬件加速来提高网站性能》
 
取消input在ios下,输入的时候英文首字母的默认大写
 
android 上去掉语音输入按钮
input::-webkit-input-speech-button {display: none}
android 2.3 bug
 
@-webkit-keyframes 需要以0%开始100%结束,0%的百分号不能去掉
after和before伪类无法使用动画
 
border-radius不支持%单位
translate百分比的写法和scale在一起会导致失效,例如-webkit-transform: translate(-50%,-50%) scale(-0.5, 1)
android 4.x bug
三星 Galaxy S4中自带浏览器不支持border-radius缩写
同时设置border-radius和背景色的时候,背景色会溢出到圆角以外部分
部分手机(如三星),a链接支持鼠标:visited事件,也就是说链接访问后文字变为紫色
 
参考《border-radius 移动之伤》
 
设计高性能CSS3动画的几个要素
尽可能地使用合成属性transform和opacity来设计CSS3动画,不使用position的left和top来定位
利用translate3D开启GPU加速
 
参考《High Performance Animations》
 
fixed bug
ios下fixed元素容易定位出错,软键盘弹出时,影响fixed元素定位
android下fixed表现要比iOS更好,软键盘弹出时,不会影响fixed元素定位
ios4下不支持position:fixed
解决方案:可用isroll.js,暂无完美方案
 
参考
《移动端web页面使用position:fixed问题总结》
《使用iScroll.js解决ios4下不支持position:fixed的问题》
如何阻止windows Phone的默认触摸事件
winphone下默认触摸事件事件使用e.preventDefault是无效的
 
目前解决方法是使用样式来禁用
 
 
  
  1. html{-ms-touch-action: none;}/* 禁止winphone默认触摸事件 */ 
 
参考:《Windows phone 8 touch support》
 
常用的移动端框架
 
zepto.js
语法与jquery几乎一样,会jquery基本会zepto~,最新版本已经更新到1.16,官网:http://zeptojs.com/
中文(非官网):http://www.css88.com/doc/zeptojs_api/
常使用的扩展模块:
浏览器检测:https://github.com/madrobby/zepto/blob/master/src/detect.js
tap事件:https://github.com/madrobby/zepto/blob/master/src/touch.js
 
iscroll.js
解决页面不支持弹性滚动,不支持fixed引起的问题~,实现下拉刷新,滑屏,缩放等功能~,最新版本已经更新到5.0
官网:http://cubiq.org/iscroll-5
 
滑屏框架
适合上下滑屏、左右滑屏等滑屏切换页面的效果
slip.js iSlider.jsfullpage.js

你可能感兴趣的:(兼容性)