移动端注意事项

移动端开发需要注意的事项

最基本的是布局和适配

一般布局都会用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。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转过来,平时看看。虽然还有很多问题至今无解。比如:华为麒麟950的P8和meta打开我们的应用首页经常偶发白屏。!...
    lyyvscc阅读 1,851评论 0 1
  • 随着手机的普及,移动端的开发也成了一个重要的方向,但由于设备的不统一会造成一些兼容性问题, 1、安卓浏览器看背景图...
    阳光嘚猴子阅读 36,587评论 0 12
  • 随着手机的普及,移动端的开发也成了一个重要的方向,但由于设备的不统一会造成一些兼容性问题, 1、安卓浏览器看背景图...
    轻丨尘阅读 816评论 0 1
  • 直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。 pu...
    堕落白天使阅读 1,344评论 0 0
  • 在家庭和工作中你会更着重选择什么?这是很多职业女性无法好好把握的问题。 在生活中,你有爱人、孩子和双方的父母。在工...
    苛娃阅读 377评论 0 1