最近在做可视化大屏的适配,要求大屏页面能够在大屏和电脑自适应,查阅了一些资料,大体上有 3 种方案:
1、使用 transform
2、将 px 转化为 rem
3、使用 zoom

查看当前浏览器尺寸:https://www.runoob.com/try/try.php?filename=tryjs_screen_all

一、利用 CSS的 transform 属性对页面布局进行自适应缩放

计算缩放比,根据屏幕大小动态设置类名。
CSS 元素设置完全按照设计稿大小设置 px,不需要转换长度单位。我的项目设计稿给的尺寸是 1920*1080。
思路:

  • 初始化的时候获得大屏幕的比例
  • 把这个比例设置给css的scale变量
  • 监听浏览器的窗口大小, 将新的比例赋给scale变量

知识点:https://www.cnblogs.com/diantao/p/4375506.html
transform 原点设置

css中缩放是使用 transform 来控制,参数可为scale、scaleX、scaleY等,但常规的缩放总以中心点为基准点,在很多时候都是很不方便的。
使用 transform-origin 来进行控制,使用 transform-origin 属性,可以改变缩放的基准点。
transform-origin: 10px 10px; // 定义缩放原点:相对于左上角的距离x、y,单位px以左上角为原点,以右上角为原点
参数可使用值:
1、参数一:left、center、right,参数二:top、center、bottom。
2、具体的像素值;
例如:transform-origin: top left;

(1)计算缩放比:
在 index.html 页面中计算缩放比:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body></body><script>window.onresize = function() {setScale()}function setScale() {let designWidth = 1920 //设计稿的宽度,根据实际项目调整let designHeight = 1080 //设计稿的高度,根据实际项目调整// 缩放比let scale =document.documentElement.clientWidth / document.documentElement.clientHeight < designWidth / designHeight? document.documentElement.clientWidth / designWidth: document.documentElement.clientHeight / designHeight// 获取所有类名为  trans-common 的元素,设置 transform 属性let selectorAll = document.querySelectorAll('.trans-common')for (let i = 0; i < selectorAll.length; i++) {selectorAll[i].style = 'transform: scale(' + scale + '); '}}</script>
</html>

(2)在页面上所有需要添加适配的布局上添加 类名 trans-common
例如:页面布局是这样的:

<div class="container"><div class="left trans-common trans-top-left">左侧布局</div><div class="right trans-common trans-top-right">右侧布局</div>
</div>

设置 transform 属性后,默认是从中心缩放,但是我的布局是左右布局,位置固定,此时,对于左侧的布局应该设置原点 transform-origin 为左上,右侧的布局原点为右上。添加类名:

.trans-top-left {transform-origin: top left;
}
.trans-top-right {transform-origin: top right;
}

参考资料:
(1)https://blog.csdn.net/xiaohuli_hyr/article/details/108119712
(2)https://www.njleonzhang.com/2018/08/15/flexible-pc-full-screen.html
(3)https://juejin.cn/post/6966103143402700837
(4)https://blog.csdn.net/weixin_43794749/article/details/118017268
(5)https://blog.csdn.net/syj573077027/article/details/117022740

二、将 px 转化为 rem

rem:根据屏幕尺寸变化动态调整根元素的字体大小
将 px 转化为 rem ,可以使用插件转换,也可以使用根元素节点字体大小来设置。但是这种设置方法,对于写在行内的 css 样式就没办法转化为 rem,所以这种方法不适用我的项目。

参考资料:
(1)https://blog.csdn.net/weixin_41192489/article/details/120004315
(2)https://blog.csdn.net/weixin_44230807/article/details/117522910

三、其他适配方案

获取屏幕尺寸比例:https://www.runoob.com/try/try.php?filename=tryjs_screen_all

参考1:Vue大数据可视化(大屏展示)解决方案:
https://blog.csdn.net/qq_40282732/article/details/105656848

参考2:Vue 大屏可视化-屏幕自适应(保持设计尺寸比例):https://blog.csdn.net/u011097323/article/details/105288458

参考3:大屏适配解决方案__Vue.js__前端:https://www.vue-js.com/topic/60cbf3944590fe0031e59cb4

四、参考

大屏适配方案:

https://www.njleonzhang.com/2018/08/15/flexible-pc-full-screen.html

https://juejin.cn/post/6966103143402700837

utils 定义方法,在mounted 中直接使用【写法】
参考https://blog.csdn.net/weixin_43859882/article/details/119744867

屏幕适配思路:
参考:https://blog.csdn.net/Sophie_U/article/details/109582687

备注:评论区的解决方案: https://www.vue-js.com/topic/60cbf3944590fe0031e59cb4

Vue 可视化大屏适配方案相关推荐

  1. vue可视化大屏教程

    在我们日常生活中,经常会看到各式各样的大屏,其中有一部分是传统的数据大屏,如工业监控大屏.环保监测大屏等.这些大屏的主要作用是展示信息,让用户快速获取信息,避免用户在阅读时产生视觉疲劳.还有一部分是智 ...

  2. Vue可视化大屏(vue+datav)纯前端

    前言:近几天看了很多关于酷炫的可视化大屏自己也想做一个. vue的组件库datav做可视化大屏足够了开心 ~主要是够酷炫 上图片 都是一些假数据将就着看吧 等把后端写出来再用后端数据哈哈哈哈哈vue真 ...

  3. 一次搞懂数据大屏适配方案 (vw vh、rem、scale)

    大厂技术  高级前端  Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 前言 当接到可视化大屏需求时,你是否会有以下疑问

  4. Vue 大屏适配方案2 锁定宽高比

    创建一个外层包裹容器,,用该容器包裹所有的router-view,根据屏幕的可视区尺寸与设计稿尺寸得到一个宽高缩放比例,根据比例去对外层包裹容器进行缩放,以适应屏幕 包裹容器完整代码: <tem ...

  5. Vue可视化大屏 利用缩放transform:scale实现分辨率自适应

    ,第一步:在data中设置默认宽高及缩放比,(宽高的值根据自己电脑的情况设置, 博主的是1920*1080) style: {width: "1920",height: " ...

  6. 可视化大屏的几种适配方案

    对于可视化大屏项目而言,我们主要需要考虑下面两个问题: 首先是div元素的适配,需要保持每个div元素在不同分辨率的屏幕下依然会显示正常的比例,不会因为不同分辨率的屏幕而变得拉伸变形: 第二个要考虑的 ...

  7. 使用VUE实现可视化大屏的适配思路总结(文末送vue版可视化大屏源码)

    页面布局 在拿到设计图后,通常会先通过设计图的布局来思考代码的设计,这也是开始着手写代码前必须要进行的一步,在项目中,我曾遇到,在一张大屏图开发到一半的时候介入,和另一个前端一起进行开发,结果由于她将 ...

  8. 4000字干货分享|一文学会搭建炫酷可视化大屏

    在一次浏览网页的过程中,小编偶然间发现一款国产的BI工具永洪Desktop,它完美地解决了上述Excel制作可视化大屏的弊端.这一期内容,小编会以星巴克在中国地区的咖啡销量数据为例,利用永洪Deskt ...

  9. 永洪Desktop实例分享|星巴克数据指标体系建设及炫酷可视化大屏搭建

    点击上方蓝字关注我们 在很久以前分享过一篇用Excel制作炫酷动态看板的文章,很多小伙伴看了之后直呼Excel这种操作极为炫酷,也想实践下这类操作.但是到了真正上手的时候,却发现利用Excel作动态看 ...

最新文章

  1. 某小公司RESTful、共用接口、前后端分离、接口约定的实践
  2. LeetCode 850. Rectangle Area II
  3. 很实用但经常忘的小常识
  4. LLLYYY的数字思维
  5. Java双等号,Equals(),HashCode()小结
  6. why new AET extension field creation will lead to session restart
  7. emacs python debug_我常用的 Python 调试工具 - 博客 - 伯乐在线
  8. MSTP多业务传输平台对设备接口的要求有哪些?
  9. 五省竞赛计算机作品,关于征集2017年华北五省(市、自治区)及港澳台大学生计算机应用大赛河北赛区竞赛作品的通知...
  10. 大数据量下高并发同步的讲解(不看,保证你后悔!)
  11. node mysql登录注册_Node数据库入门(登录注册功能)
  12. 都是arm 为什么用java,为什么内存指令在ARM汇编中需要4个周期?
  13. ext 不能修改 输入框_浏览器文本框不能输入文字解决方法
  14. wav是什么格式?怎么转成mp3?
  15. 十大经典的心理学效应
  16. 计算机cpu后面字母代表什么意思,英特尔CPU型号中最后的字母什么意思?如有不懂欢迎驻足停留...
  17. 倪光南建议禁用Win10政府版 微软合作方回应
  18. 基于SSM的医院医疗管理系统的设计与实现
  19. 坑人无数的俩货:半包和粘包
  20. NAT配置两台Ubuntu通网

热门文章

  1. 华为云云数据库RDS MySQL 版初试探【华为云至简致远】
  2. jsbox 导入_JSBox - 体验
  3. kali2020.2设置中文
  4. Python路径处理库pathlib
  5. Windows Phone实例开发 - [鲜闻阅读器]
  6. js数组求和、最大、最小值
  7. TCP编程及实现图片上传
  8. java计算机毕业设计家校沟通程序源码+mysql数据库+系统+lw文档+部署
  9. 对融资融券和股指期货的看法
  10. 基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量控制 都是通过Verilog 语言来实现的