大屏适配方案二——vw和vh

按照设计稿的尺寸,将px按比例计算转为vw和vh,转换公式如下

假设设计稿尺寸为 1920*1080(做之前一定问清楚 ui 设计稿的尺寸)即:
网页宽度=1920px
网页高度=1080px我们都知道
网页宽度=100vw
网页宽度=100vh所以,在 1920px*1080px 的屏幕分辨率下1920px = 100vw
1080px = 100vh这样一来,以一个宽 300px 和 200px 的 div 来说,其所占的宽高,以 vw 和 vh 为单位,计算方式如下:vwDiv = (300px / 1920px ) * 100vw
vhDiv = (200px / 1080px ) * 100vh所以,就在 1920*1080 的屏幕分辨率下,计算出了单个 div 的宽高当屏幕放大或者缩小时,div 还是以 vw 和 vh 作为宽高的,就会自动适应不同分辨率的屏幕

1、新建文件:src/styles/index.less

@charset "utf-8";//默认设计稿的宽度
@designWidth: 1920;
//默认设计稿的高度
@designHeight: 1080;.px2vw(@name, @px) {@{name}: (@px / @designWidth) * 100vw;
}.px2vh(@name, @px) {@{name}: (@px / @designHeight) * 100vh;
}
.px2font(@px) {font-size: (@px / @designWidth) * 100vw;
}.px2margin(@top, @right, @bottom, @left) {margin: (@top / @designHeight) * 100vh (@right / @designWidth) * 100vw (@bottom / @designHeight) * 100vh(@left / @designWidth) * 100vw;
}
.px2padding(@top, @right, @bottom, @left) {padding: (@top / @designHeight) * 100vh (@right / @designWidth) * 100vw (@bottom / @designHeight) * 100vh(@left / @designWidth) * 100vw;
}

2、配置在vite.config.js配置less全局变量

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import path from 'path';export default defineConfig({css: {preprocessorOptions: {less: {javascriptEnabled: true,additionalData: `@import "${path.resolve(__dirname, 'src/styles/index.less')}";`}}}
});

3、在 vue 文件中使用

<template><div class="box">   </div>
</template>
<style lang="less" scoped="scoped">
/* 直接使用 vw 和 vh 函数,将像素值传进去,得到的就是具体的 vw vh单位   */
.box{.px2vw(width, 300);.px2vh(height, 100);.px2font(16);.px2vw(margin-left, 300);.px2vh(margin-top, 100);.px2padding(0, 16, 16, 16);background-color: black;
}
</style>

4、特殊情况处理
1)echarts图表字体、间距、位移等尺寸自适应
echarts 的字体大小只支持具体数值(像素),不能用百分比或者 vw 等尺寸,一般字体不会去做自适应,当宽高比跟 ui 稿比例出入太大时,会出现样式问题
封装工具函数:

//给定设计稿的字体大小,计算当前分辨率下,等比例缩放后的字体大小
export const fitSize = (size, defalteWidth = 1920) => {let clientWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;if (!clientWidth) return size;let scale = clientWidth / defalteWidth;return Number((size * scale).toFixed(3));
};

使用:

 var myChart = echarts.init(document.getElementById('left-bottom'));var option = {tooltip: {trigger: 'item',textStyle: {fontSize: fitSize(14)}},legend: {top: '5%',left: 'center',itemWidth: fitSize(25),itemHeight: fitSize(14),textStyle: {color: '#fff',fontSize: fitSize(12)}},series: [{name: 'Access From',type: 'pie',radius: ['40%', '70%'],avoidLabelOverlap: false,label: {show: false,position: 'center'},emphasis: {label: {show: true,fontSize: fitSize(28),fontWeight: 'bold'}},labelLine: {show: false},data: [{ value: 1048, name: 'Search Engine' },{ value: 735, name: 'Direct' },{ value: 580, name: 'Email' },{ value: 484, name: 'Union Ads' },{ value: 300, name: 'Video Ads' }]}]};myChart.setOption(option);

2)定义 js 样式处理函数

// 定义设计稿的宽高
const designWidth = 1920;
const designHeight = 1080;// px转vw
export const px2vw = (_px) => {return (_px * 100.0) / designWidth + 'vw';
};export const px2vh = (_px) => {return (_px * 100.0) / designHeight + 'vh';
};export const px2font = (_px) => {return (_px * 100.0) / designWidth + 'vw';
};

使用:

<divclass="content":style="{ 'font-size': px2font(14) }"
>环境监测环境监测环境监测环境监测
</div>
<el-table:data="tableData"style="width: 100%":height="px2vh(342)"
><el-table-columnprop="name"label="Name":width="fitSize(80)"/><el-table-columnprop="date"label="Date":width="fitSize(120)"/>
</el-table>

3)第三方插件的处理如:element、antd
4)地图插件处理

参考:一次搞懂数据大屏适配方案 (vw vh、rem、scale)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/211227.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu安装docker及docker常用命令

docker里有三个部分 daemon 镜像 和 容器 我们需要了解的概念 容器 镜像 数据卷 文章目录 docker命令docker镜像相关命令docker容器相关命令数据卷ubuntu安装docker docker命令 #启动&#xff0c;停止&#xff0c;重启docker systemctl start docker systemctl stop docker s…

SpringBoot的依赖管理和自动配置

与其明天开始&#xff0c;不如现在行动&#xff01; 文章目录 1 依赖管理机制2 自动配置机制2.1 初步理解2.2 完整流程 &#x1f48e;总结 1 依赖管理机制 为什么导入starter-web后所有相关依赖都会导入进来&#xff1f; 开发什么场景&#xff0c;导入什么场景启动器-spring-bo…

vscode调试pytorch分布式训练

launch.json文件如下"cwd" "${fileDirname}"表示代码调试的根目录是当前你调试的文件&#xff0c;也就是pretrain.py所在的目录。其他路径参数都是相对这个目录的 如果改成"cwd" "${workspaceFolder}" 表示代码调试的根目录是打开的工…

【Python百宝箱】构筑铜墙铁壁:Python 认证与授权库实战指南

Python认证与授权&#xff1a;构建安全、可扩展的应用 前言 在当今数字化时代&#xff0c;用户认证和授权是构建安全、可信任的应用程序的基石。Python生态系统提供了丰富而强大的库和工具&#xff0c;以支持多种身份验证和授权方案。本文将深入探讨一系列Python库&#xff0…

MyBatis框架中的5种设计模式总结

前言 MyBatis框架中使用的5种设计模式分别是&#xff1a;1、建造者模式&#xff08;生成器模式&#xff09;。2、工厂模式。3、单例模式。4、代理模式。5、适配器模式。 1、建造者模式&#xff08;生成器模式&#xff09; 在MyBatis环境的初始化过程中&#xff0c;SqlSessio…

Redis 环境搭建2

文章目录 第2关&#xff1a;使用 Redis 第2关&#xff1a;使用 Redis 本文是接着上篇文章写的第二关代码&#xff0c;部分人再进入第二关时不会保留第一关的配置的环境&#xff0c;可以通过下面一句代码进行检验。 redis-cli -p 7001 -c如果进入到了redis界面就是有环境&…

问题:batchnormal训练单个batch_size就会报错吗

Batch Normalization&#xff08;批标准化&#xff09;是一种深度学习中的正则化技巧&#xff0c;它可以改进网络的训练过程。在训练神经网络时&#xff0c;Batch Normalization可以帮助解决内部协变量偏移&#xff08;Internal Covariate Shift&#xff09;的问题。 在标准的…

pytorch serve开始-Getting started

官网链接 Getting started — PyTorch/Serve master documentation 安装TorchServe和torch-model-archiver 安装依赖 注意::对于Conda&#xff0c;运行Torchserve需要Python >3.8。 对于基于Debian的系统/ MacOS CPU python ./ts_scripts/install_dependencies.py 对…

【Hadoop】高可用集群搭建

知识目录 一、写在前面&#x1f495;二、Zookeeper安装✨三、Hadoop配置✨四、Hadoop HA自动模式✨五、HA脚本分享✨七、结语&#x1f495; 一、写在前面&#x1f495; 大家好&#xff01;这篇文章是我在搭建Hdfs的HA(高可用)时写下的详细笔记与感想&#xff0c;希望能帮助到大…

Notes数据直接在Excel中统计

大家好&#xff0c;才是真的好。 我希望你看过前面两篇内容《Domino REST API安装和运行》和《Domino REST API安装和运行》&#xff0c;因为今天我们正是使用REST API方式在Excel中查询和统计Notes数据。 不过首先你得知道一个OData协议&#xff0c;全名Open Data Protocol(…

五花八门客户问题(BUG) - 用好strace2

目录 前言 strace与gdb的冲突 细看strace 前言 上文通过strace trace它自个看到了strace的原理:确实是调用了ptrace函数实现的。今天我们再细看一看。 strace与gdb的冲突 既然它两底层都是用ptrace,那么一定不能同时用在同一个进程上。实例验证: [root]# strace sleep…

布隆过滤器,Redis之 bitmap,场景题【如果微博某个大V发了一条消息,怎么统计有多少人看过了】

文章目录 一、什么是 bitmap1-1、Bitmap 相关命令二、bitmap 和 set 对比2-1、数据准备2-2、内存对比2-3、性能对比三、布隆过滤器3-1、理论主要作用如何将数据放到过滤器内呢?注意事项布隆过滤器 有两个重要的参数3-2、代码实现3-3、Java中的hash函数最近面试,面试官问了一个…

Windows系统Java开发环境安装

总结一下Java软件开发工程师常见的环境的安装&#xff0c;仅限Windows环境。 以下下载链接均来自官网&#xff0c;网络条件自己克服。 目录 1. JDKJDK Oracle 官网下载地址配置系统环境变量 2. Mavenapache maven 官网地址本地仓库和中央仓库配置配置系统环境变量 3. GitGit 官…

springboot3 liquibase SQL执行失败自动回滚,及自动打tag

一&#xff1a; 自动执行回滚&#xff0c; 已执行成功的忽略&#xff0c;新sql执行失败则执行新sql文件中的回滚sql pom.xml <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.25.0&…

【工厂方法】设计模式项目实践

前言 以采集数据处理逻辑为例&#xff0c;数据采集分为不同种类如&#xff1a;MQTT、MODBUS、HTTP等&#xff0c;不同的采集数据有不同的解析处理逻辑。但总体解析处理步骤是固定的。可以使用工厂方法设计模式简化代码&#xff0c;让代码变得更加优雅。 代码实践 抽象类 总体…

分布式环境下的session 共享-基于spring-session组件和Redis实现

1、问题概述 不是所有的项目都是单机模式的&#xff0c;当一个项目服务的局域比较广&#xff0c;用户体量比较大&#xff0c;数据量较大的时候&#xff0c;我们都会将项目部署到多台服务器上&#xff0c;这些个服务器都是分布在不同的区域&#xff0c;这样实现了项目的负载和并…

Redis有序集合对象

一.编码 有序集合的编码可以是ziplist或者skiplist。 ziplist编码的有序集合对象使用压缩列表作为底层实现&#xff0c;每一个集合元素使用紧挨在一起的两个压缩列表节点来保存。第一个节点保存元素的成员(member)&#xff0c;而第二个元素则保存元素的分值(score)。 127.0.0.…

鸿蒙app获取文本控件按钮控件_修改控件名称_按钮触发事件_提示信息显示

鸿蒙app获取文本控件按钮控件_修改控件名称_按钮触发事件_ 点击启动&#xff1a;提示信息显示 package com.example.myapplication.slice;import com.example.myapplication.ResourceTable; import ohos.aafwk.ability.AbilitySlice; import ohos.aafwk.content.Intent; impor…

12.1电梯控制器——文档记录

《数字逻辑》实验报告 实验名称 项目三 电梯控制器设计 一、实验目的 设计一个多楼层的电梯控制器系统&#xff0c;并能在开发板上模拟电梯运行状态。可以利用按键作为呼叫按键&#xff0c;数码管显示电梯运行时电梯所在楼层&#xff0c;led灯显示楼层叫梯状态。 二、实…

太良心了!微软面向初学者,开源机器学习、数据科学、AI、LLM

大家好&#xff0c;推荐几个质量上乘且完全免费的微软开源课程&#xff0c;由粉丝小伙伴梳理&#xff0c;分享给大家。 文末可以加我们粉丝群 面向初学者的机器学习课程 ML for beginners banner 地址&#xff1a;https://microsoft.github.io/ML-For-Beginners/#/ 学习经典…