移动端H5踩坑总结

  • 前言: pc侧重点击事件,在h5侧重交互触摸
    掘金汇总: 掘金h5

  • h5 不得不考虑安卓与ios的兼容性(例如 日期 date - 以及 sort() 函数)

mate 属性

  1. 使用viewport使页面禁止缩放。 通常把user-scalable设置为0来关闭用户对页面视图缩放的行为。
<meta name="viewport" content="user-scalable=0" />
  1. apple-mobile-web-app-capable是设置Web应用是否以全屏模式运行。
<meta name="apple-mobile-web-app-capable" content="yes">
  1. format-detection 启动或禁用自动识别页面中的电话号码。
<meta name="format-detection" content="telephone=no">
  1. 顶部状态栏背景色
<meta name="apple-mobile-web-app-status-bar-style" content="black" />

tips: 除非你先使用apple-mobile-web-app-capable指定全屏模式,否则这个meta标签不会起任何作用。

如果content设置为default,则状态栏正常显示。如果设置为blank,则状态栏会有一个黑色的背景。如果设置为blank-translucent,则状态栏显示为黑色半透明。如果设置为default或blank,则页面显示在状态栏的下方,即状态栏占据上方部分,页面占据下方部分,二者没有遮挡对方或被遮挡。如果设置为blank-translucent,则页面会充满屏幕,其中页面顶部会被状态栏遮盖住(会覆盖页面20px高度,而iphone4和itouch4的Retina屏幕为40px)。默认值是default。
设置缓存

  1. 设置缓存
<meta http-equiv="Cache-Control" content="no-cache" />

手机页面通常在第一次加载后会进行缓存,然后每次刷新会使用缓存而不是去重新向服务器发送请求。如果不希望使用缓存可以设置no-cache。

浏览器私有及其它meta

以下属性在项目中没有应用过,可以写一个demo测试以下!

QQ浏览器私有

全屏模式

<meta name="x5-fullscreen" content="true">

强制竖屏

<meta name="x5-orientation" content="portrait">

强制横屏

<meta name="x5-orientation" content="landscape">

应用模式

扫描二维码关注公众号,回复: 12939784 查看本文章
<meta name="x5-page-mode" content="app">

UC浏览器私有

全屏模式

<meta name="full-screen" content="yes">

强制竖屏

<meta name="screen-orientation" content="portrait">

强制横屏

<meta name="screen-orientation" content="landscape">

应用模式

<meta name="browsermode" content="application">

其它

link标签

23、桌面图标

<link rel="apple-touch-icon" href="touch-icon-iphone.png" />
<link rel="apple-touch-icon" sizes="76x76" href="touch-icon-ipad.png" />
<link rel="apple-touch-icon" sizes="120x120" href="touch-icon-iphone-retina.png" />
<link rel="apple-touch-icon" sizes="152x152" href="touch-icon-ipad-retina.png" />

iOS下针对不同设备定义不同的桌面图标。如果不定义则以当前屏幕截图作为图标。

上面的写法可能大家会觉得会有默认光泽,下面这种设置方法可以去掉光泽效果,还原设计图的效果!

<link rel="apple-touch-icon-precomposed" href="touch-icon-iphone.png" />

24、启动画面

<link rel="apple-touch-startup-image" href="start.png"/>

a标签在h5中使用

  1. html5调用安卓或者ios的拨号功能

html5提供了自动调用拨号的标签,只要在a标签的href中添加tel:就可以了。

如下:

 <a href="tel:4008106999,1034">400-810-69991034</a>

拨打手机直接如下

 <a href="tel:15677776767">点击拨打15677776767</a>

禁止复制、选中文本

Element {
    
    
  -webkit-user-select: none;
  -moz-user-select: none;
  -khtml-user-select: none;
   user-select: none;
}

解决移动设备可选中页面文本(视产品需要而定)

11、长时间按住页面出现闪退

element {
    
    
  -webkit-touch-callout: none;
}

12、iphone及ipad下输入框默认内阴影

Element{
    
    
  -webkit-appearance: none; 
}

13、ios和android下触摸元素时出现半透明灰色遮罩

Element {
    
    
  -webkit-tap-highlight-color:rgba(255,255,255,0)
}

设置alpha值为0就可以去除半透明灰色遮罩,备注:transparent的属性值在android下无效。

14、active兼容处理 即 伪类 :active 失效

方法一:body添加ontouchstart

<body ontouchstart="">

方法二:js给 document 绑定 touchstart 或 touchend 事件

<style>
a {
    
    
 color: #000;
}
a:active {
    
    
 color: #fff;
}
</style>
<a herf=foo >bar</a>
<script>
 document.addEventListener('touchstart',function(){
    
    },false);
</script>

15、动画定义3D启用硬件加速

Element {
    
    
  -webkit-transform:translate3d(0, 0, 0)
  transform: translate3d(0, 0, 0);
}

注意:3D变形会消耗更多的内存与功耗

猜你喜欢

转载自blog.csdn.net/ZHXT__/article/details/114296466