设置根节点font-size实现rem适配移动端设备

适配前先搞清楚几个像素的概念
        像素概念:
        1)物理像素:显示器上最小的物理显示单位
        2)设备独立像素(也叫逻辑像素):虚拟概念,一个可以由程序使用的最小虚拟像素点(css像素)
        3)设备像素比:也叫dpr,可以通过window.devicePixelRatio获取。
          设备像素比 = 物理像素 / 设备独立像素


        以iphone6来说,
        物理像素分辨率: 750 * 1334     (值越大屏幕越清晰)
        设备独立像素分辨率 : 375 * 667  (值越大手机屏幕越大,与屏幕直观尺寸有关)
        设备像素比: 2


适配原则:对移动端320-768进行适配,超过768采用768原则.小于320采用320原则。

当设备宽度>768(iPad尺寸),根节点统一使用102.4px
当设备宽度<320(一般手机最小尺寸),根节点统一使用42.7px

(function(d){
  const html = d.getElementsByTagName('html')[0];  // html节点
  let resizeEvent = 'orientationchange' in window ? 'orientationchange' : 'resize';
  function getScale() {
    let width = html.clientWidth, // 设备宽度
        dpr = window.devicePixelRatio, // 像素比
        scale = Number(width/750).toFixed(4),  //  320:0.427   768:1.024
        lastScale = scale>1.024?1.024:(scale<0.427?0.427:scale);
    return lastScale;
  }
  let changePage = function(e) {
    let lastScale = getScale();
    if ( html.clientWidth <= 768 ) {
      html.setAttribute('style','font-size:'+(lastScale*100).toFixed(3)+'px');
    } else {
      html.setAttribute('style','')
    }
  }
  changePage();
  if (!document.addEventListener) return;
  window.addEventListener(resizeEvent, changePage, false);  // 监听设备屏幕旋转/页面resize
  document.addEventListener('DOMContentLoaded', changePage, false); // 监听刷新页面
})(document);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值