H5 移动端开发注意事项

一、meta标签的设置

   viewport视口属性设置

<meta name="viewport"
    content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,viewport-fit=cover">
  • width:视口的宽度,width=device-width:宽度是设备的宽度
  • initial-scale:初始化缩放,- initial-scale=1.0:不缩放
  • user-scalable:是否允许用户自行缩放,取值0或1,yes或no
  • minimum-scale:最小缩放
  • maximum-scale:最大缩放
  • 一般设置了不允许缩放,就没必要设置最大最小缩放了。
  • viewport-fit=cover 解决iphoneX、11、12等刘海儿屏和底部有安全区域都不能全凭问题,也需要配合页面高度设置为100vh,有时候100%不生效。

二、单位的使用

  需使用百分比%、vw/vh、rem单位,如使用uni-app开发使用rpx(该框架已经做了单位转换)

  建议使用rem,转换rem单位的两种方式

  1、js计算设置根元素的fontSize,一般以750设计搞计算。需要放在页面头部header标签里边。

<script>
    (function (doc, win) {
      var docEl = doc.documentElement,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
        recalc = function () {
          var clientWidth = docEl.clientWidth;
          if (!clientWidth) return;
          if (clientWidth >= 750) {
            docEl.style.fontSize = '100px';
          } else {
            docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
          }
        };
      if (!doc.addEventListener) return;
      win.addEventListener(resizeEvt, recalc, false);
      doc.addEventListener('DOMContentLoaded', recalc, false);
    })(document, window);
</script>

  2、利用媒体查询设置元素的fontSize,可兼容大小屏幕,如不做ipad兼容,建议使用第一种。

@media screen and (min- 320px) {
  html {
    font-size: 42.6667px;
  }
}

@media screen and (min- 360px) {
  html {
    font-size: 48px;
  }
}

@media screen and (min- 375px) {
  html {
    font-size: 50px;
  }
}

@media screen and (min- 400px) {
  html {
    font-size: 53.3333px;
  }
}

@media screen and (min- 414px) {
  html {
    font-size: 55.2px;
  }
}

@media screen and (min- 440px) {
  html {
    font-size: 58.6667px;
  }
}

@media screen and (min- 480px) {
  html {
    font-size: 64px;
  }
}

@media screen and (min- 520px) {
  html {
    font-size: 69.3333px;
  }
}

@media screen and (min- 560px) {
  html {
    font-size: 74.6667px;
  }
}

@media screen and (min- 600px) {
  html {
    font-size: 80px;
  }
}

@media screen and (min- 640px) {
  html {
    font-size: 85.3333px;
  }
}

@media screen and (min- 680px) {
  html {
    font-size: 90.6666px;
  }
}

@media screen and (min- 720px) {
  html {
    font-size: 96px;
  }
}

@media screen and (min- 760px) {
  html {
    font-size: 101.3333px;
  }
}

@media screen and (min- 800px) {
  html {
    font-size: 106.6666px;
  }
}

@media screen and (min- 960px) {
  html {
    font-size: 128px;
  }
}

三、移动端如使用有软键盘弹出的页面,尽量不使用fixed定位,输入框input获取焦点得时,虚拟键盘会把fixed元素顶上去,ios中有时候fixed定位会失效,一般使用绝对定位。

四、ios页面滑动不流畅问题(如引用滑动插件可不做处理

.scroll-y{
    /* 使之可以滚动 */
    overflow-y: scroll;
    /* 增加该属性,可以增加弹性 */
    -webkit-overflow-scrolling: touch;
}

五、new Date()日期格式注意

  ios不支持new Date('2020-11-20 20:20')这种格式,会报NAN,安卓支持,ios支持的格式为new Date('2020/11/20 20:20')

let date = '2020-11-20 20:20' 
date.replace(/-/g, '/')    

六、移动端尽量使用flex布局,不使用float浮动。

七、移动端加载图片尽量使用2倍图,安卓浏览器加载图片,有些设备会模糊。

原文地址:https://www.cnblogs.com/zhanglongke/p/13993263.html