背景

数据大屏项目,需要适配不同屏幕,且在任意屏幕下保持16:9的比例,保持显示效果一致,屏幕比例不一致两边留黑即可

分析

不同屏幕宽高比例(和设计稿16:9)相比会有两种情况:

1、更宽:(window.innerWidth / window.innerHeight) > 16/9 ,以高度为基准,去适配宽度

2、更高:(window.innerWidth / window.innerHeight) < 16/9 ,以宽度为基准,去适配高度

选择方案:

计算需要缩放的比例,利用transform的scale属性缩放即可

为什么不用px->rem或媒体查询?

因为用rem起来太麻烦了;媒体查询代码大量书写 比较繁琐;而且echarts里面的东西不好适配

使用transform可以完全按照设计稿的尺寸去开发,缩放的是整个页面

效果预览-更高

效果预览-更宽

实现代码

新建resizeMixin.js

// * 默认缩放值
const scale = {width: '1',height: '1',
};// * 设计稿尺寸(px)
const baseWidth = 1920;
const baseHeight = 1080;// * 需保持的比例(默认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}) translate(-50%, -50%)`;} else {// 表示更高scale.height = (window.innerWidth /baseProportion /baseHeight).toFixed(5);scale.width = (window.innerWidth / baseWidth).toFixed(5);appRef.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`;}}},resize() {clearTimeout(this.drawTiming);this.drawTiming = setTimeout(() => {this.calcRate();}, 200);},},
};

App.vue,body背景设置成黑色即可

<template><div id="app" ref="app"><router-view /></div>
</template><script>
export default {};
</script>
<style lang="scss" scoped>
#app {width: 100vw;height: 100vh;background-color: #020308;overflow: hidden;
}
</style>

Layout.vue引入resizeMixin

<template><div id="index" ref="appRef"><router-view /></div>
</template><script>
import resizeMixin from '@/utils/resizeMixin ';export default {mixins: [resizeMixin]
}</script><style lang="scss" scoped>
#index {// 设计稿宽高width: 1920px;  height: 1080px;// 盒子水平垂直居中position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);& > div {height: 100%;width: 100%;}
}
</style>

数据可视化大屏,屏幕多分辨率适配方案,且在任意屏幕下保持16:9的比例等比缩放相关推荐

  1. 【可视化大屏】屏幕多分辨率适配方案

    一.任意屏幕下保持16:9的比例等比缩放 https://blog.csdn.net/weixin_57756140/article/details/123681114 1.背景 数据大屏项目,需要适 ...

  2. Qt编写数据可视化大屏界面电子看板1-布局方案

    一.前言 布局方案在整个数据可视化大屏界面电子看板系统中,是除了基础功能以外的核心功能之一,只有具备了布局方案这个功能,才能让用户随意调整自己想要的布局,保存成自定义名称的布局配置文件,这样就大大增加 ...

  3. elementui的tree组件页面显示不出数据_只要10分钟,教你配置出炫酷的数据可视化大屏...

    在电影<摩天营救>中,监控中心的全方位展示屏幕给人印象深刻.现在这种立体化大屏幕似乎成了好莱坞大片的标配.其实,这种逼格很高的镜头就是一个数据可视化大屏.随着社会信息化的高速增长,数据可视 ...

  4. 怎么做数据可视化大屏?从设计到上线,一般用这3类工具

    数据可视化大屏成为了这两年很火爆的一个需求. 一方面,不少甲方都想做这么酷炫的大屏,用于公司展厅.日常经营监控,还有些特殊行业如交通.运输.工厂制造,会做更高级的3D建模等. 另一方面,市面上可提供做 ...

  5. 如何制作高效率的数据可视化大屏

    近段时间,"数据可视化"已经成了科技领域中非常热门的词汇,随着全国各地智慧园区的建设和崛起,数据可视化大屏的投放需求也变得越来越多.那么,企业应该如何制作高效率的数据可视化大屏呢? ...

  6. YYDatav的数据可视化大屏《精彩案例汇总》(PythonEcharts源码)

    一. 资源下载 [1-10]套Python+Echarts数据可视化大屏案例(共10套)-企业管理文档类资源-CSDN下载第1篇https://yydatav.blog.csdn.net/articl ...

  7. 27【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏范例 - 监控指挥中心

    目录 效果展示 1. 效果动图 2. 多种主题效果 一. 确定需求方案 1. 屏幕分辨率 2. 部署方式 二. 整体架构设计 三. 编码实现 (基于篇幅及可读性考虑,此处展示部分关键代码) 1. 前端 ...

  8. 炫酷大屏demo_只要10分钟,教你配置出炫酷的数据可视化大屏

    在电影<摩天营救>中,监控中心的全方位展示屏幕给人印象深刻.现在这种立体化大屏幕似乎成了好莱坞大片的标配.其实,这种逼格很高的镜头就是一个数据可视化大屏. 随着社会信息化的高速增长,数据可 ...

  9. 数据可视化大屏设计师,我不信你没有这些困惑!(上)

    一.数据可视化大屏究竟是什么东西 二.数据大屏设计效果如何落地 三.调研不积极,改稿到窒息 不知道大家做为数据大屏设计师,平时工作有没有一些困惑.在去年画了60多张大屏页面之后,我失去了青春和头发,化 ...

  10. 教你如何让设计好的数据可视化大屏进行个性化展示

    天下熙熙,皆为利来:天下攘攘,皆为利往.在许许多多的公众场所,企业机构,政府大厅等,你是否注意到总会有一个格外显眼的大屏展示屏幕?这就是数据可视化大屏. 目前数据可视化大屏在金融.运输.媒体.制造.地 ...

最新文章

  1. 51单片机可以做什么实用的产品?
  2. 会说话,减少奋斗30年
  3. 轻松玩转jquery。
  4. Flyweight Pattern简单随笔
  5. ORA-39095: Dump file space has been exhausted
  6. FreeBSD基本命令[转]
  7. noip模拟赛 不等数列
  8. 同时面了腾讯三个部门,拿下offer!
  9. WCF服务寄宿IIS与Windows服务 - C#/.NET
  10. Webpack实战(八):教你搞懂webpack如果实现代码分片(code splitting)
  11. Atitit.attilax软件研发与项目管理之道
  12. python marshal 对象序列化和反序列化
  13. 怎样黑网吧的万象系统_5636小编教你如何进入万象网管系统
  14. 全国计算机二级c语言上机考试软件,考前刷题专用
  15. 如何进入DOS系统 | 常用DOS系统命令
  16. 显卡 内存分配 linux,玩转笔记本显卡共享显存设置
  17. AI上推荐 之 MIND(动态路由与胶囊网络的奇光异彩)
  18. BJTU 懒羊羊吃青草
  19. 2.1 分布式文件系统HDFS-使用
  20. Windows组策略应用全攻略

热门文章

  1. 川大2019计算机硕土论文盲审,四川大学关于对2017年下半年申请答辩研究生学位论文进行抽查盲审的通知...
  2. 新编日语教程—第五课
  3. 从小型机到x86:四川电信核心数据库迁移到虚拟化平台
  4. android开发技术可行性,Flutter技术调研及可行性结论
  5. 9 二叉树的重建--来源于沈钰S同学(舒姐)
  6. 数字逻辑组合电路分析练习题
  7. 第10周 Mongodb的GridFS与分片
  8. java开发多国语言互译
  9. [SGT]P1486
  10. JAVA软件开发本科B组7:错误票据