可视化大屏自适应

可视化大屏自适应完成步骤

一,配置lib-flexible px2remLoader

1.安装依赖

npm install px2rem-loader -D
npm install lib-flexible -S

2.引入依赖

        main.js引入lib-flexible

import 'lib-flexible'

3.px转换成rem

        vue-loader的options和其他样式文件loader最终是都是由build/utils.js里的方法生成的,我们只需在cssLoader后再加上一个px2remLoader即可,px2rem-loader的remUnit选项意思是 1rem=多少像素,结合lib-flexible的方案,我们将px2remLoader的options.remUnit设置成设计稿宽度的1/10,这里假设设计稿宽为1920px

        build/utils.js中添加px2remLoader

const cssLoader = {
    loader: 'css-loader',
    options: {
      sourceMap: options.sourceMap
    }
  }

  // 增加代码,px转rem配置(需要将px2remloader添加进loaders数组中)
  const px2remLoader = {
    loader: 'px2rem-loader',
    options: {
      remUnit: 192,  //根据视觉稿,rem为px的十分之一,1920px  192 rem
      // remPrecision: 8//换算的rem保留几位小数点
    }
  }

        

// generate loader string to be used with extract text plugin
function generateLoaders (loader, loaderOptions) {
   const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]

   if (loader) {
     loaders.push({
       loader: loader + '-loader',
       options: Object.assign({}, loaderOptions, {
         sourceMap: options.sourceMap
       })
     })
   }
   //...
 }

4.修改node_modules\lib-flexible\flexible.js

    function refreshRem(){
        var width = docEl.getBoundingClientRect().width;
        if (width / dpr > 540) {
            width = width * dpr;//这里的540修改成width
        }
        var rem = width / 10;
        docEl.style.fontSize = rem + 'px';
        flexible.rem = win.rem = rem;
    }

5.去除滚动条

在index.html中加上overflow: hidden

<!DOCTYPE html>
<html style="overflow: hidden;">
  <head>
......

二、echarts自适应

1.在每个echarts组件中配置

<template>
 <div class="chaa" >
     <div class="chart" id="mzgb" > 
     </div>
    
</div>
</template>
<script>
    export default {
        data () {
            return {

            }
        },
        mounted(){
          this.chart();
        },
        methods: {
          chart() {
             //当前视口宽度
      let nowClientWidth = document.documentElement.clientWidth;
      // 换算方法
      let nowSize = function (val, initWidth = 1920) {
        return val * (nowClientWidth / initWidth);
      };

            let myChart = this.$echarts.init(document.getElementById('mzgb'))
            myChart.setOption({

......
......
      });
     // myChart.setOption(option, true);
        window.addEventListener('resize', () => {
        // 自动渲染echarts
        myChart.resize()
      })
          
    },

   },
      
    }
</script>

2.使用方法

在每个需要设置size的地方使用nowSize()

fontSize: nowSize(24)

三、整体布局

//整个
.home{  
width: 100%;
  height: 100vh;
  background-size: 100% 100%;
  background-image: url("...");
}
//每个组件
.a{
height:20vh;
}
.b{
height:30vh;
}
.c{
height:50vh;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值