vue3后台管理系统之数据大屏适配解决方案

1:scale 方式

我们整个大屏的尺寸设置和设计图一样,只是通过css的scale放大缩小属性,来控制实际展示的大小。

通过监听浏览器窗口的大小,来改变scale的比例,从而实现数据大屏适配。(百度、网易等大数据适配的解决方案均是这个)

设计稿宽高比是 1920 * 1080

缺点:1.因为是根据 ui 稿等比缩放,当大屏跟 ui 稿的比例不一样时,会出现周边留白情况 2.当缩放比例过大时候,字体会有一点点模糊,就一点点 3.当缩放比例过大时候,事件热区会偏移。

空白的部分用背景图片填充就好了。

代码:





分析

vue3后台管理系统之数据大屏适配解决方案_第1张图片

  1. 获取数据大屏展示内容区域的 DOM 元素。
  2. style.transform:这是访问元素的 transform 样式属性。transform 是一个 CSS 属性,用于对元素进行变换,例如旋转、缩放、平移等。
  3. scale(${getScale()}):这部分代码中,getScale() 函数返回一个缩放比例,这个比例会应用在 scale() 函数中。这样,页面元素会按照指定的比例进行缩放。缩放比例是根据窗口大小和设计稿大小计算的,以确保内容适应不同的屏幕尺寸。
  4. translate(-50%, -50%):这部分代码中,translate() 函数用于对元素进行平移。在这里,它将元素的中心点平移到屏幕的中心。-50% 表示水平和垂直方向都要将元素平移到其自身宽度和高度的一半的位置,从而实现居中效果。
  5. transform-origin 是 CSS 属性,用于指定元素的变换(比如旋转、缩放、平移等)的原点位置,即元素围绕哪个点进行变换操作。在你提供的样式中,transform-origin 设置为 left top,这意味着元素的变换原点位于元素的左上角。

如何居中首先我们利用 transform:translate(-50%,-50%) ,将动画的基点设为左上角

transform-origin:设置动画的基点(中心点),默认点是元素的中心点

语法

transform-origin: x-axis y-axis z-axis;

然后利用transform:translate(-50%,-50%),将图表沿 x,y 轴移动 50%

vue3后台管理系统之数据大屏适配解决方案_第2张图片

因为屏幕左右可能会有空白,所以我们需要用背景图片填充,设置移动原点为左上角

vue3后台管理系统之数据大屏适配解决方案_第3张图片

2:rem方式

关于 remrem(font size of the root element),是 css3 中新增的一个大小单位,即相对于根元素 font-size 值的大小。自适应思路动态的计算出页面的 fontsize 从而改变 rem 的大小。

  1. 拿 1920 * 1080 的标准屏幕大小为例,将屏幕分为10份,先计算rem 的基准值: 1920 / 10 = 192;
  2. 把所有元素的长、宽、位置、字体大小等原来的 px 单位全部转换成 rem;
  3. 网页加载后,用 js 去计算当前浏览器的宽度,并设置 html 的 font-size 为 (当前浏览器窗口宽度 / 10) 。 这样的话 10rem 就刚好等于浏览器窗口的宽度,也就可以保证 100% 宽度,等比例缩放设计稿的页面了。

使用插件lib-flexible

下载依赖

pnpm i lib-flexible

引入:

vue3后台管理系统之数据大屏适配解决方案_第4张图片

vue3后台管理系统之数据大屏适配解决方案_第5张图片

在node_module/lib-flexible/flexible.js中修改代码如下

// 修改原始的
        // if (width / dpr > 540) {
        //     width = 540 * dpr;
        // }
        // var rem = width / 10;

        // 修改成为
          // 最小400px,最大适配2560px
        if (width / dpr < 400) {
            width = 400 * dpr;
        } else if (width / dpr > 2560) {
            width = 2560 * dpr;
        }
        // 设置成24等份,设计稿时1920px的,这样1rem就是80px (1920/24=80)方便使用
        var rem = width / 24;

插件:

下载vscode 插件px2rem将px转换为rem

Echarts的resize方法: Echarts提供了resize方法,用于手动调整图表的大小。在窗口大小变化时,调用此方法来重新渲染图表。

this.$refs.echarts.resize();

你可能感兴趣的:(echarts,前端,vue)