手机端适配之lib-flexible结合px2rem

手机端适配之lib-flexible结合px2rem_第1张图片

下载包(--save);

main.js引入:

import 'lib-flexible';

或者直接引入其源代码:

(function flexible (window, document) {
  var docEl = document.documentElement
  var dpr = window.devicePixelRatio || 1

  // adjust body font size
  function setBodyFontSize () {
    if (document.body) {
      document.body.style.fontSize = (12 * dpr) + 'px'
    }
    else {
      document.addEventListener('DOMContentLoaded', setBodyFontSize)
    }
  }
  setBodyFontSize();

  // set 1rem = viewWidth / 10
  function setRemUnit () {
    var rem = docEl.clientWidth / 10
    docEl.style.fontSize = rem + 'px'
  }

  setRemUnit()

  // reset rem unit on page resize
  window.addEventListener('resize', setRemUnit)
  window.addEventListener('pageshow', function (e) {
    if (e.persisted) {
      setRemUnit()
    }
  })

  // detect 0.5px supports
  if (dpr >= 2) {
    var fakeBody = document.createElement('body')
    var testElement = document.createElement('div')
    testElement.style.border = '.5px solid transparent'
    fakeBody.appendChild(testElement)
    docEl.appendChild(fakeBody)
    if (testElement.offsetHeight === 1) {
      docEl.classList.add('hairlines')
    }
    docEl.removeChild(fakeBody)
  }
}(window, document))

修改index.html meta标签


//注意这两个的区别,建议添加下面的meta,反正点击输入框,页面自动缩放

build.js里面添加 px2remLoader

手机端适配之lib-flexible结合px2rem_第2张图片

const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      //一般设置75
      remUnit: 75
    }
  }

在generateLoaders方法里添加刚才的

px2remLoader 

px2rem的简单使用:

 

.selector {
    width: 150px;
    height: 64px; /*px*/    -->打算强制使用px
    font-size: 28px; /*px*/
    border: 1px solid #ddd; /*no*/   -->不打算转换原始值
}

 

更多请移步px2rem官方文档

如果不想使用px2rem则使用less、sass也可以

//定义一个变量和一个mixin
@baseFontSize: 75;//基于视觉稿横屏尺寸/100得出的基准font-size
.px2rem(@name, @px){
    @{name}: @px / @baseFontSize * 1rem;
}
//使用示例:
.container {
    .px2rem(height, 240);
}
//less翻译结果:
.container {
    height: 3.2rem;
}

 

 

你可能感兴趣的:(手机端适配之lib-flexible结合px2rem)