适配方案

103 阅读1分钟

三端适配(Pc Ipad Moblie)

利用sass sass-loader lib-flexible(动态计算屏幕的基准值) 通过监视屏幕的宽度切换三套样式

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

<script>
export default {
  name: 'App',
  data(){
    return {
      model:''
    }
  },
  methods:{
    // 根据视口宽度调整显示模式
    changeModel(width){
      let _model=''
      switch(true){
        case width>=1000:
          _model='pc'
          break
        case 1000>width && width>=600:
          _model='middle'
          break
        case 600>width:
          _model='mobile'
          break
      }
      if(_model!==this.model){
            this.model=_model
            console.log(99999999999,_model);
            document.getElementsByTagName('html')[0].className=this.model
        }
    },
    windowResizeHandler(e){
      const width=e.currentTarget.innerWidth
      this.changeModel(width)
    }
  },
  mounted(){
    this.changeModel(window.innerWidth)
    window.onresize=this.windowResizeHandler
  }
}
</script>

<style>
#app {

}
</style>

移动端rem适配(H5)

lib-flexible(动态计算屏幕的基准值)和 postcss-pxtorem(全局转化rem)(基准值影响大小 切换不同设备时rem值不变 font-size自动转化 实现自适应)

配置文件:

// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
    plugins: {
        autoprefixer: {
            overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8']
        },
        'postcss-pxtorem': {
            rootValue: 37.5,
            propList: ['*']
        }
    }
}

文件位置截图: image.png

电脑屏幕适配

// 根据不同屏幕 等比例缩放 宽高不变
        resize() {
            var s;
            // s = window.screen.width / 1920;
            // document.body.style.transformOrigin = '0 0';
            // document.body.style.transform = 'scale(' + s + ',' + s + ')';
            // document.body.style.width = window.innerWidth / s + 'px';
            // document.body.style.height = window.innerHeight / s + 'px';
            s = window.screen.width / 1920;
            document.body.style.zoom = s;
        }

分割屏幕的宽度,手动计算font-size的大小:

function Rem() {
        // 表示1920的设计图,使用100PX的默认值
        var whdef = 100 / 2350;
        // 当前窗口的宽度
        var bodyWidth = document.body.clientWidth;
        // 以默认比例值乘以当前窗口宽度,得到该宽度下的相应FONT-SIZE值
        var rem = bodyWidth * whdef;
        document.getElementsByTagName('html')[0].style.fontSize = rem + 'px';
}
window.addEventListener('load', Rem);
window.addEventListener('resize', Rem)