vue 实现自适应屏幕

Posted 小亓不可爱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue 实现自适应屏幕相关的知识,希望对你有一定的参考价值。

1.安装自适应屏幕插件(优先使用vscode安装,需要调整px转化rem比例)

(1)安装插件:

          npm i lib-flexible --save

(2)mian.js引入:

         import 'lib-flexible/flexible.js'

2. 如果出现跑板现象,在node_modules文件夹中找到lib-flexible下面的flexible.js文件。

(1)找到下列代码注释掉:        

function refreshRem()
   var width = docEl.getBoundingClientRect().width;
   if (width / dpr > 540) 
   width = 540 * dpr;
   
   var rem = width / 10;
   docEl.style.fontSize = rem + 'px';
   flexible.rem = win.rem = rem;

(2)添加一句新的代码:

function refreshRem() 
 var rem = docEl.clientWidth / 24;
 docEl.style.fontSize = rem + 'px'

3. 在app.vue中的style中加入。

@media screen and (max-width: 1024px) 
  html 
   font-size: 42.66px!important;
   
  
  @media screen and (min-width: 2560px) 
   font-size: 106.66px!important;
   
 

 4.找到vscode安装插件的位置。

第二步中修改为80即可。

 

这样就实现了项目自适应屏幕的效果。

 

vue-echarts数据可视化实现自适应屏幕进行缩放

使用这个后可以实现屏幕自适应

 

效果如下

技术图片

 

 技术图片

 

 

<template>
  <div style="width:100%;height:20rem" ref="res1">
    <!-- <v-chart :options="polar" style="width: 100%;height:100%;" ref="echarts1" id="chart1"/> -->
    <v-chart
      :options="orgOptions"
      :auto-resize="true"
      style="width: 100%;height:100%;"
      ref="echarts1"
      id="chart1"
    />
  </div>
</template>
 
<style>
.echarts {
  width: 100%;
  height: 100%;
}
</style>
 
<script>
import ECharts from "vue-echarts";
import "echarts/lib/chart/line";
import "echarts/lib/component/polar";

export default {
  components: {
    "v-chart": ECharts
  },
  data() {
    let data = [];

    for (let i = 0; i <= 360; i++) {
      let t = (i / 180) * Math.PI;
      let r = Math.sin(2 * t) * Math.cos(2 * t);
      data.push([r, i]);
    }

    return {
      orgOptions: {},
      polar: {
        title: {
          text: "极坐标双数值轴"
        },
        legend: {
          data: ["line"]
        },
        polar: {
          center: ["50%", "54%"]
        },
        tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "cross"
          }
        },
        angleAxis: {
          type: "value",
          startAngle: 0
        },
        radiusAxis: {
          min: 0
        },
        series: [
          {
            coordinateSystem: "polar",
            name: "line",
            type: "line",
            showSymbol: false,
            data: data
          }
        ],
        animationDuration: 2000
      }
    };
  },
  mounted() {
    this.orgOptions = {
      xAxis: {
        type: "category",
        data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
      },
      yAxis: {
        type: "value"
      },
      series: [
        {
          data: [820, 932, 901, 934, 1290, 1330, 1320],
          type: "line",
          smooth: true
        }
      ]
    };
    // 以下两种方案均可
    window.addEventListener("resize", this.resizeTheChart);
    //  setInterval(() => {
    //     window.onresize = function () {
    //      if (this.$refs && this.$refs.echarts1 ) {
    //         this.resizeTheChart()
    //     }
    //     }
    //   }, 100)
  },
  methods: {
    resizeTheChart() {
      if (this.$refs && this.$refs.echarts1) {
        this.$refs.echarts1.resize();
      }
    }
  },
  beforeDestroy() {
    window.removeEventListener("resize", this.resizeTheChart);
  }
};
</script>

 

以上是关于vue 实现自适应屏幕的主要内容,如果未能解决你的问题,请参考以下文章

Vue前端项目自适应布局

Vue前端项目自适应布局

Vue项目屏幕自适应

vue element的meun菜单自适应屏幕宽度

vue自适应布局(各种浏览器,分辨率)

vue给的1360的图怎么写页面做到自适应