配置rem

rem是基于html元素的字体大小来计算的

网页要实现的大小 = 需要设置的rem大小(根据设计稿给出的的px和自定的px和rem比例计算) * html元素的字体大小

 所以要实现设计稿并且适应宽度不同的屏幕需要经过一下计算

1.由于设计稿的宽度是一定的,高度是不可控的,所以我们根据宽度来设置html字体的大小比例

2.首先假设设计稿宽度是750px,100px = 1rem

3.网页的实际宽度 = 7.5(rem)* html元素的字体大小 

4.所以只需要设置 html元素的字体大小 = 网页的实际宽度/(设计稿宽度/自定的px和rem比例) 就能自适应不同的宽度的页面

 

代码实现

(function () {
  let remInitialized = false;

  function initRem() {
    var $html = document.querySelector('html');
    var $body = document.querySelector('body');
    var $screen = document.createElement('div');

    $screen.style.cssText += 'position:fixed; width:100%; height:100%; display:none;';
    $body.insertBefore($screen, $body.firstChild);

    function setRem() {
      $screen.style.display = 'block';
      var w = Number(document.defaultView.getComputedStyle($screen).width.replace(/px/, ''));
      $screen.style.display = 'none';
      $html.style.fontSize = (100 * w / 375) + 'px';
    }
    setRem();
    window.addEventListener('resize', setRem);
    window.addEventListener('orientationchange', setRem, false);
    remInitialized = true;
  }

  initRem();
}());

在使用时只需要将这个js文件引入,并以100比1的比例自己转换px和rem,就可实现想要的适应不同尺寸的展示效果

posted @ 2019-09-24 17:20  瑞瑞大人  阅读(362)  评论(0编辑  收藏  举报