Vue项目如何改变屏幕尺寸重新刷新页面-计算页面尺寸

 更新时间:2022年09月15日 15:49:12   作者:JackieDYH  
这篇文章主要介绍了Vue项目如何改变屏幕尺寸重新刷新页面-计算页面尺寸,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

改变屏幕尺寸重新刷新页面-计算页面尺寸

效果

在app.vue中设置

方式一

<template>
  <div id="app">
      <router-view />
  </div>
</template>
<script>
export default {
  name: "App",
  components: {},
  data() {
    return {};
  },
  created() {},
  mounted() {
    //窗口尺寸改变
    window.onresize = () => {
      return (() => {
        // this.$forceUpdate();//强制更新数据
        this.$router.go(0);
      })();
    };
  },
  methods: {},
  destroyed() {
    // 销毁
    window.onresize = null;
  },
};
</script>

多次使用window.onresize,会造成其他的失效

方式二

<template>
  <div id="app">
      <router-view />
  </div>
</template>
<script>
export default {
  name: "App",
  components: {},
  data() {
    return {};
  },
  created() {},
  mounted() {
    //窗口尺寸改变
    window.addEventListener("resize", () => this.Refresh());
  },
  methods: {
	Refresh() {
      this.$router.go(0);
    },
  },
  destroyed() {
    // 销毁
    window.removeEventListener("resize", this.Refresh());
  },
};
</script>

尺寸的自适应 大屏自适应

我在一些大屏的项目中,碰见自己电脑写好的样式,但是在大屏中出现了变形。

通过 postcss-px2rem 插件,实现项目的自适应

使用:

** 1、安装包**

npm install postcss-px2rem px2rem-loader --save

2、文件创建

在src目录下创建一个util的工具文件夹,然后创建一个js文件,这里我叫pxtorem.js,文件中写上一下代码

// rem等比适配配置文件
// 基准大小
const baseSize = 16
// 设置 rem 函数
function setRem () {
  // 当前页面宽度相对于 1920宽的缩放比例,可根据自己需要修改。
  const scale = document.documentElement.clientWidth / 1920
  // 设置页面根节点字体大小(“Math.min(scale, 2)” 指最高放大比例为2,可根据实际业务需求调整)
  document.documentElement.style.fontSize = baseSize * Math.min(scale, 2) + 'px'
}
// 初始化
setRem()
// 改变窗口大小时重新设置 rem
window.onresize = function () {
  setRem()
}

3、在main.js文件中引入刚刚创建好的文件

import './util/pxtorem'

4、在vue.config.js文件中配置

如果项目中没有这个文件,可以自己手动在根目录下创建一下

// 引入等比适配插件
const px2rem = require('postcss-px2rem')
// 配置基本大小
const postcss = px2rem({
  // 基准大小 baseSize,需要和rem.js中相同
  remUnit: 16
})
// 使用等比适配插件
module.exports = {
  lintOnSave: true,
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          postcss
        ]
      }
    }
  }
}

通过transform,可用于echarts的项目中

ps:echart中的适应,你也可以用echarts自带的resize,然后对内部的文字字体大小设置一个值,进行变化 

<template>
  <div id="app">
    <div ref="newCatalog" class="newCatalog">
      <router-view />
    </div>
  </div>
</template>
<script>
export default {
  name: 'App',
  data() {
    return {
      scale: ''
    }
  },
  mounted() {
    this.setScale()
    window.addEventListener('resize', this.setScale)
  },
  methods: {
    getScale() {
      const width = window.screen.width
      const height = window.screen.height
      let ww = window.innerWidth / 1920
      let wh = window.innerHeight / 1080
      return ww < wh ? ww : wh
    },
    setScale() {
      this.scale = this.getScale()
      this.$refs.newCatalog.style.setProperty('--scale', this.scale)
    }
  }
}
</script>
<style lang="scss">
@import '~style/init.scss';
#app {
  width: 100vw;
  height: 100vh;
  font-family: Alibaba-PuHuiTi-R, Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  background: url('~assets/images/bg.png');
  background-size: cover;
}
.newCatalog {
  --scale: 1;
  width: 1920px;
  height: 1080px;
  background-size: 100% 100%;
  position: absolute;
  transform: scale(var(--scale)) translate(-50%, -50%);
  display: flex;
  flex-direction: column;
  transform-origin: 0 0;
  left: 50%;
  top: 50%;
}
</style>

通过 postcss-px-to-viewport 插件,实现项目的自适应

文档

和vue.config.js 文件同级,建一个 postcss.config.js 的文件

module.exports = {
  plugins: {
    'postcss-px-to-viewport': {
      unitToConvert: 'px', // 需要转换的单位,默认为"px"
      viewportWidth: 1920, // 设计稿的视口宽度
      unitPrecision: 5, // 单位转换后保留的精度
      propList: ['*'], // 能转化为vw的属性列表
      viewportUnit: 'vw', // 希望使用的视口单位
      fontViewportUnit: 'vw', // 字体使用的视口单位
      selectorBlackList: [], // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。
      minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换
      mediaQuery: false, // 媒体查询里的单位是否需要转换单位
      replace: true, //  是否直接更换属性值,而不添加备用属性
      exclude: [/node_modules/, /LargeScreen/], // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件,数组中写正则
      include: undefined, // 如果设置了include,那将只有匹配到的文件才会被转换
      landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape)
      landscapeUnit: 'vw', // 横屏时使用的单位
      landscapeWidth: 1920, // 横屏时使用的视口宽度
    },
  },
};

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue中的适配px2rem示例代码

    vue中的适配px2rem示例代码

    这篇文章主要给大家介绍了关于vue中适配px2rem的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • vue悬浮表单复合组件开发详解

    vue悬浮表单复合组件开发详解

    这篇文章主要为大家详细介绍了vue悬浮表单复合组件开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • uniapp webview和H5通信的3种方式代码示例

    uniapp webview和H5通信的3种方式代码示例

    最近在研究uni-app跨端开发APP和H5的通讯和交互,比如H5调用APP的方法,APP往H5里面传参,H5往app外面传参,这篇文章主要给大家介绍了关于uniapp webview和H5通信的3种方式,需要的朋友可以参考下
    2024-04-04
  • VUE 实现element upload上传图片到阿里云

    VUE 实现element upload上传图片到阿里云

    这篇文章主要介绍了VUE 实现element upload上传图片到阿里云,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 基于vue+h5实现车牌号输入框功能(demo)

    基于vue+h5实现车牌号输入框功能(demo)

    最近开发项目是学校校内车辆超速方面的统计检测方面的系统,在开发过程中发现有个小功能,就是用户移动端添加车牌号,刚开始想着输入框,提交时正则效验一下格式,最后感觉不方便,所以就简单自己手写了一个H5车牌号软键盘,对vue车牌号输入框实现代码感兴趣的朋友一起看看吧
    2025-03-03
  • 基于Vue3实现一个简单的方位动画

    基于Vue3实现一个简单的方位动画

    这篇文章主要为大家详细介绍了如何基于Vue3实现一个简单的方位动画,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • vue3系统进入页面前的权限判断和重定向方式

    vue3系统进入页面前的权限判断和重定向方式

    这篇文章主要介绍了vue3系统进入页面前的权限判断和重定向方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 详解Vue如何将多个空格被合并显示成一个空格

    详解Vue如何将多个空格被合并显示成一个空格

    这篇文章主要为大家详细介绍了在Vue中如何将多个空格被合并显示成一个空格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • 手把手教你使用electron将vue项目打包成exe

    手把手教你使用electron将vue项目打包成exe

    Electron相当于一个浏览器的外壳,可以把现有的vue程序嵌入到壳里面,下面这篇文章主要给大家介绍了关于如何使用electron将vue项目打包成exe的相关资料,需要的朋友可以参考下
    2023-01-01
  • Vue弹窗的两种实现方式实例详解

    Vue弹窗的两种实现方式实例详解

    这篇文章主要介绍了Vue弹窗的两种实现方式,一种使用.sync修饰符另一种使用v-model,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08

最新评论