首页 > 其他分享 >【vue】可视化大屏实现固定比例布局(不错位)

【vue】可视化大屏实现固定比例布局(不错位)

时间:2024-06-21 16:58:47浏览次数:13  
标签:vue const width height toFixed window scale 可视化 大屏

背景
最初方案是使用dataV中的大屏自适应组件,后续发现dataV在不同显示器分辨率下的效果会不一致导致图表内容错位等问题;后续查找资料重新写自适应。

组件封装
resizeMixin.js

// * 默认缩放值
const scale = {
    width: '1',
    height: '1',
};

// * 设计稿尺寸(px)
const baseWidth = 2560;
const baseHeight = 1440;

// * 需保持的比例(默认16:9)
const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5));

export default {
    data() {
        return {
            drawTiming: null,
        };
    },
    mounted() {
        this.calcRate();
        window.addEventListener('resize', this.resize);
    },
    beforeDestroy() {
        window.removeEventListener('resize', this.resize);
    },
    methods: {
        calcRate() {
            const appRef = this.$refs['appRef'];
            if (!appRef) return;
            // 当前宽高比
            const currentRate = parseFloat(
                (window.innerWidth / window.innerHeight).toFixed(5)
            );
            if (appRef) {
                // if (currentRate > baseProportion) {
                //     // 表示更宽
                //     scale.width = (
                //         (window.innerHeight * baseProportion) /
                //         baseWidth
                //     ).toFixed(5);
                //     scale.height = (window.innerHeight / baseHeight).toFixed(5);
                //     appRef.style.transform = `scale(${scale.width}, ${scale.height})`;
                // } else {
                    // 表示更高
                    scale.height = (
                        window.innerWidth /
                        baseProportion /
                        baseHeight
                    ).toFixed(5);
                    scale.width = (window.innerWidth / baseWidth).toFixed(5);
                    appRef.style.transform = `scale(${scale.width}, ${scale.height})`;
                // }
            }
        },
        resize() {
            clearTimeout(this.drawTiming);
            this.drawTiming = setTimeout(() => {
                this.calcRate();
            }, 200);
        },
    },
};

页面使用
js:

import resizeMixin from "@/utils/resizeMixin";

export default {
  mixins: [resizeMixin],

  data() {
    return {}
  },
  ......
}

div:

<template>
  <div class="pane" ref="appRef">
  ......
   </div>
</template>

css:

.pane {
  /*// 设计稿宽高*/
  width: 2560px;
  height: 1440px;
  /*// 盒子水平垂直居中*/
  position: fixed;
  top: 0;
  left: 0;
  transform-origin: left top;
  transform: translate(-50%, -50%);
  overflow: hidden;
}

效果图:
在这里插入图片描述
在这里插入图片描述

标签:vue,const,width,height,toFixed,window,scale,可视化,大屏
From: https://blog.csdn.net/Anlittlecat/article/details/139864405

相关文章

  • vue3实现模拟地图上,站点名称按需显示的功能
    很久很久没有更新博客了,因为实在是太忙了,每天都有公司的事情忙不完.......最近在做车辆模拟地图,在实现控制站点名称按需显示时,折腾了好一段时间,特此记录一下。最终界面如下图所示:站点显示需求:首末站必须显示,从第一个站开始,如果站点名称能显示下,则显示,如果站点名称会重叠则隐藏,......
  • 【python数据可视化】利用Python爬取天气数据并实现数据可视化,绘制天气轮播图
    用Python爬虫抓取全年天气数据并绘制天气轮播图一、运行结果:二、代码展示:由csv文件生成↓接下来是绘制天气轮播图运行结果:完整代码请看这里↓......
  • Vite+Electronss构建vue3桌面应用
    本文介绍使用vite构建Electron项目,使用@vitejs/plugin-vue插件辅助完成vue3桌面应用,主要使用Vite,Vue,Electron,@vitejs/plugin-vue四个模块。一创建项目1、输入命令npminitvite首先输入项目名称viteElectron,选择Vue框架和javascript语言2、运行项目输入命令:cdvite......
  • Vue配置项data
    data目录data目录类型介绍关键原理编译过程Vue2Vue3......
  • Vue非单文件组件
    非单文件组件......
  • vue3中如何使用pinia -- pinia使用教程(一)
    vue3中如何使用pinia--pinia使用教程(一)安装使用创建store使用store访问修改store使用组合式api创建store--setupstorepinia和hook的完美结合如何解决上面的问题使用hook管理全局状态和pinia有何优缺点?参考小结pinia是一个Vue3的状态管理库,它......
  • 开源项目推荐-vue2+element+axios 个人财务管理系统
    文章目录financialmanagement项目简介项目特色项目预览卫星的实现方式:首次进入卫星效果的实现方式:卫星跟随鼠标滑动的随机效果实现方式:环境准备项目启动项目部署项目地址financialmanagement项目简介vue2+element+axios个人财务管理系统是基于vue2+element+ax......
  • 基于Python爬虫的城市天气数据可视化分析
    基于Python爬虫的城市天气数据可视化分析一、项目简介二、项目背景三、Python语言简介四、网络爬虫简介五、数据可视化简介六、天气数据爬取与存储6.1获取目标网页6.2发送请求6.3提取数据6.4保存数据七、天气数据可视化7.1天气现象轮播图7.2历......
  • 计算机毕业设计项目推荐,33709基于协同过滤的旅游推荐系统的设计与实现(开题答辩+程序定
    摘 要本论文主要论述了如何使用python语言、Django框架开发一个旅游推荐系统,本系统将严格按照软件开发流程,进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述该系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各个阶段分析......
  • Nginx部署Vue前端项目,部署多个Vue项目
    参考:https://blog.csdn.net/qq_33454884/article/details/89212702启动闪退:https://blog.csdn.net/weixin_66383346/article/details/1326221561.下载安装nginx 下载地址:https://nginx.org/en/download.html  windows版:nginx/Windows-1.27.0解压后必须放在没有中文,没有空格......