当前位置: 首页 > ops >正文

Vue3 数据可视化屏幕大屏适配 页面自适应 响应式 数据大屏 大屏适配

介绍

数据可视化大屏应用时,页面的自适应和响应式设计至关重要。这些技术能够确保应用能够根据不同屏幕尺寸、设备分辨率和窗口变化自动调整布局和显示内容,提升用户体验。
在这里插入图片描述
全屏适配
无论大屏还是小屏完美设配
在这里插入图片描述

工具

import { onBeforeUnmount, onMounted, ref } from 'vue';/*** useResponsiveScale Hook - 用于实现自适应缩放功能* * @param {number} baseWidth 设计稿的宽度,默认值为 1920* @param {number} baseHeight 设计稿的高度,默认值为 1080* @returns {object} 返回包含 appRef 的对象,appRef 用于绑定需要缩放的元素*/
export function useResponsiveScale(baseWidth = 1920, baseHeight = 1080) {// 定义响应式变量,保存缩放的定时器const drawTiming = ref(null);// 定义响应式变量,保存缩放的宽度和高度const scale = ref({width: '1',height: '1',});// 计算设计稿的宽高比const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5));// 用于绑定需要进行缩放的元素的 refconst appRef = ref(null);/*** 计算并应用缩放比例*/const calcRate = () => {if (!appRef.value) return; // 如果 appRef 没有被绑定,直接返回// 计算当前窗口的宽高比const currentRate = parseFloat((window.innerWidth / window.innerHeight).toFixed(5));// 如果当前窗口比设计稿更宽,按宽度缩放if (currentRate > baseProportion) {scale.value.width = ((window.innerHeight * baseProportion) / baseWidth).toFixed(5);scale.value.height = (window.innerHeight / baseHeight).toFixed(5);appRef.value.style.transform = `scale(${scale.value.width}, ${scale.value.height}) translate(-50%, -50%)`;} else {// 如果当前窗口比设计稿更高,按高度缩放scale.value.height = ((window.innerWidth / baseProportion) / baseHeight).toFixed(5);scale.value.width = (window.innerWidth / baseWidth).toFixed(5);appRef.value.style.transform = `scale(${scale.value.width}, ${scale.value.height}) translate(-50%, -50%)`;}};/*** 处理窗口 resize 事件,防止频繁触发*/const resize = () => {clearTimeout(drawTiming.value); // 清除上一次的定时器drawTiming.value = setTimeout(() => {calcRate(); // 在延迟后计算缩放比例}, 150);};// 在组件挂载时执行计算,并监听窗口的 resize 事件onMounted(() => {calcRate(); // 初始化时计算缩放比例window.addEventListener('resize', resize); // 监听 resize 事件});// 在组件卸载时移除 resize 事件监听器onBeforeUnmount(() => {window.removeEventListener('resize', resize);});// 返回 appRef,以便在组件中绑定需要缩放的元素return {appRef};
}

模板

  <div class="box" ref="appRef"><div class="draw"></div><div class="draw"></div><div class="draw"></div></div>

样式

.box{color: #d3d6dd;width: 1920px;height: 1080px;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);transform-origin: left top;overflow: hidden;
}

导入

import { useResponsiveScale } from './utils/rsponsiveScale.js';
const { appRef } = useResponsiveScale();
http://www.xdnf.cn/news/8400.html

相关文章:

  • 用matlab提取abaqus odb文件中的节点信息
  • 动态规划-740.删除并获取节点-力扣(LeetCode)
  • ollama 部署模型休眠、释放问题
  • OpenJudge | 用二分法求方程的根
  • 怎么判断一个Android APP使用了Qt 这个跨端框架
  • 2步彻底卸载VScode
  • AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.12.15-2024.12.20
  • 408提示
  • Linux入门(九)任务调度
  • Claude 4:一场AI代理革命的起点
  • 古文时空重构:当AI把课本诗词做成4D电影
  • day34 python深度学习训练优化实践:CPU vs GPU
  • 基于SpringBoot+Vue的足球青训俱乐部管理后台系统的设计与开发
  • Three.js与Babylon.js对比
  • Flyweight(享元)设计模式 软考 享元 和 代理属于结构型设计模式
  • AI+制造:中小企业的低成本智能化转型
  • 迅为3568开发板实操-HDF驱动配置 UART-配置 rk3568_uart_config.hcs
  • 2025期中考复现
  • 【ubuntu】Ubuntu安装 XTerminal和使用
  • Widget进阶
  • redis常用命令
  • Fastrace:Rust 中分布式追踪的现代化方案
  • 【Oracle】创建公共数据连接
  • Jouier 普及组十连测 R3
  • 【人工智能】低代码-模版引擎
  • Pluto实验报告——基于2ASK的简易的通信系统
  • 常见激活函数
  • debug一个cpu频率一直最低的问题
  • PyTorchviz 和 Graphviz:可视化 PyTorch 模型的利器
  • 第九天的尝试