Vue 可视化大屏适配方案
最近在做可视化大屏的适配,要求大屏页面能够在大屏和电脑自适应,查阅了一些资料,大体上有 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 可视化大屏适配方案相关推荐
- vue可视化大屏教程
在我们日常生活中,经常会看到各式各样的大屏,其中有一部分是传统的数据大屏,如工业监控大屏.环保监测大屏等.这些大屏的主要作用是展示信息,让用户快速获取信息,避免用户在阅读时产生视觉疲劳.还有一部分是智 ...
- Vue可视化大屏(vue+datav)纯前端
前言:近几天看了很多关于酷炫的可视化大屏自己也想做一个. vue的组件库datav做可视化大屏足够了开心 ~主要是够酷炫 上图片 都是一些假数据将就着看吧 等把后端写出来再用后端数据哈哈哈哈哈vue真 ...
- 一次搞懂数据大屏适配方案 (vw vh、rem、scale)
大厂技术 高级前端 Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 前言 当接到可视化大屏需求时,你是否会有以下疑问
- Vue 大屏适配方案2 锁定宽高比
创建一个外层包裹容器,,用该容器包裹所有的router-view,根据屏幕的可视区尺寸与设计稿尺寸得到一个宽高缩放比例,根据比例去对外层包裹容器进行缩放,以适应屏幕 包裹容器完整代码: <tem ...
- Vue可视化大屏 利用缩放transform:scale实现分辨率自适应
,第一步:在data中设置默认宽高及缩放比,(宽高的值根据自己电脑的情况设置, 博主的是1920*1080) style: {width: "1920",height: " ...
- 可视化大屏的几种适配方案
对于可视化大屏项目而言,我们主要需要考虑下面两个问题: 首先是div元素的适配,需要保持每个div元素在不同分辨率的屏幕下依然会显示正常的比例,不会因为不同分辨率的屏幕而变得拉伸变形: 第二个要考虑的 ...
- 使用VUE实现可视化大屏的适配思路总结(文末送vue版可视化大屏源码)
页面布局 在拿到设计图后,通常会先通过设计图的布局来思考代码的设计,这也是开始着手写代码前必须要进行的一步,在项目中,我曾遇到,在一张大屏图开发到一半的时候介入,和另一个前端一起进行开发,结果由于她将 ...
- 4000字干货分享|一文学会搭建炫酷可视化大屏
在一次浏览网页的过程中,小编偶然间发现一款国产的BI工具永洪Desktop,它完美地解决了上述Excel制作可视化大屏的弊端.这一期内容,小编会以星巴克在中国地区的咖啡销量数据为例,利用永洪Deskt ...
- 永洪Desktop实例分享|星巴克数据指标体系建设及炫酷可视化大屏搭建
点击上方蓝字关注我们 在很久以前分享过一篇用Excel制作炫酷动态看板的文章,很多小伙伴看了之后直呼Excel这种操作极为炫酷,也想实践下这类操作.但是到了真正上手的时候,却发现利用Excel作动态看 ...
最新文章
- 某小公司RESTful、共用接口、前后端分离、接口约定的实践
- LeetCode 850. Rectangle Area II
- 很实用但经常忘的小常识
- LLLYYY的数字思维
- Java双等号,Equals(),HashCode()小结
- why new AET extension field creation will lead to session restart
- emacs python debug_我常用的 Python 调试工具 - 博客 - 伯乐在线
- MSTP多业务传输平台对设备接口的要求有哪些?
- 五省竞赛计算机作品,关于征集2017年华北五省(市、自治区)及港澳台大学生计算机应用大赛河北赛区竞赛作品的通知...
- 大数据量下高并发同步的讲解(不看,保证你后悔!)
- node mysql登录注册_Node数据库入门(登录注册功能)
- 都是arm 为什么用java,为什么内存指令在ARM汇编中需要4个周期?
- ext 不能修改 输入框_浏览器文本框不能输入文字解决方法
- wav是什么格式?怎么转成mp3?
- 十大经典的心理学效应
- 计算机cpu后面字母代表什么意思,英特尔CPU型号中最后的字母什么意思?如有不懂欢迎驻足停留...
- 倪光南建议禁用Win10政府版 微软合作方回应
- 基于SSM的医院医疗管理系统的设计与实现
- 坑人无数的俩货:半包和粘包
- NAT配置两台Ubuntu通网