移动端开发需要注意的事项
最基本的是布局和适配
一般布局都会用flex布局
适配用单位rem
1、防止手机中网页放大和缩小,这点是最基本的,在设置meta中的viewport
使用viewport使页面禁止缩放。 通常把user-scalable设置为0来关闭用户对页面视图缩放的行为。
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
2、单位
<script>
window.onload = function(){
getRem(750,100)
};
window.onresize = function(){
getRem(750,100)
};
function getRem(pwidth,prem){
var html = document.getElementsByTagName("html")[0];
var oWidth = document.body.clientWidth || document.documentElement.clientWidth;
html.style.fontSize = oWidth/pwidth*prem + "px";
}
</script>
3、安卓浏览器看背景图片,有些设备会模糊。
经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页,这样字会非常小,
想让图片在手机里显示更为清晰,必须使用2x的背景图来代替img标签(一般情况都是用2倍)然后background-size:contain;
注:devicePixelRatio属性
该 Window 属性 devicePixelRatio 能够返回当前显示设备的物理像素分辨率与 CSS 像素分辨率的比率。
4、apple-mobile-web-app-capable
设置Web应用是否以全屏模式运行,content设置为yes,Web应用会以全屏模式运行,反之,则不会。content的默认值是no,表示正常显示。window.navigator.standalone可以用来来确定网页是否以全屏模式显示。
<meta name="apple-mobile-web-app-capable" content="yes">
5、format-detection
启动或禁用自动识别页面中的电话号码和邮箱。
< meta name="format-detection" content="telephone=no">
< meta name="format-detection" content="email=no">
6、html5调用安卓或者ios的拨号功能
html5提供了自动调用拨号的标签,只要在a标签的href中添加tel:就可以了。
转拨
<a href="tel:4008106999,1034">400-810-6999 转 1034</a>
直接拨打
<a href="tel:15677776767">点击拨打15677776767</a>
7、上下拉动滚动条时卡顿、慢
Element {
-webkit-user-select: none;
-moz-user-select: none;
-khtml-user-select: none;
user-select: none;
}
Android3+和iOS5+支持CSS3的新属性为overflow-scrolling
8、禁止链接的callout信息
当在iOS上一直按住一个目标元素时,Safari会展示一个关于这个链接的callout信息。webkit-touch-callout属性允许禁用掉这一行为。 此属性目前只针对ios
element {
-webkit-touch-callout: none;
}
9、iphone及ipad下输入框默认内阴影
-webkit-appearance: none;
10、旋转屏幕时,字体大小调整的问题
html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {
-webkit-text-size-adjust:100%;
}
11、圆角bug
安卓圆角失效:background-clip: padding-box;
12、设置缓存
手机页面通常在第一次加载后会进行缓存,然后每次刷新会使用缓存而不是去重新向服务器发送请求。如果不希望使用缓存可以设置no-cache。
<meta http-equiv="Cache-Control" content="no-cache" />
13、长时间按住页面出现闪退
element { -webkit-touch-callout: none; }
14、ios和android下触摸元素时出现半透明灰色遮罩
Element {-webkit-tap-highlight-color:rgba(255,255,255,0)}
15、Retina屏的1px边框
Element{border-width: thin;}
注:Retina(一种新型高分辨率的显示标准)
所谓“Retina”是一种显示标准,是把更多的像素点压缩至一块屏幕里,从而达到更高的分辨率并提高屏幕显示的细腻程度
16、顶部状态栏背景色
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
如果content设置为default,则状态栏正常显示。如果设置为blank,则状态栏会有一个黑色的背景。如果设置为blank-translucent,则状态栏显示为黑色半透明。
如果设置为default或blank,则页面显示在状态栏的下方,即状态栏占据上方部分,页面占据下方部分,二者没有遮挡对方或被遮挡。
如果设置为blank-translucent,则页面会充满屏幕,其中页面顶部会被状态栏遮盖住(会覆盖页面20px高度,而iphone4和itouch4的Retina屏幕为40px)。
默认值是default。