Echarts大屏展示,实现响应式比较常用的方式

以前写过一些大屏可视化的实现方式,发现有点落后了,更新下。

能学到的知识

  • 1、PC数据可视化项目,实现响应式一篇搞定
  • 2、配合 蓝湖 使用,主要是取元素的样式、色值,完美还原
  • 3、基于vue2vue cli4echarts 5

效果图

浏览器默认状态

在这里插入图片描述

1920x1080

在这里插入图片描述

1440x900

在这里插入图片描述

1366x768

在这里插入图片描述

1024x768

在这里插入图片描述

实现

主要思路就是,根据设计图的尺寸,用csstransform: scale缩放页面。

实现缩放主要代码

changeScale() {
  const body = document.documentElement
  const scale1 = body.clientWidth / this.width
  const scale2 = body.clientHeight / this.height
  const scale = scale1 < scale2 ? scale1 : scale2
  this.styleObj.transform = `scale(${scale}) translate(-50%, -50%)`
}

translate,是为了让页面的缩放保持宽高比,要配合对应容器的css实现,例如本项目的:

.bigscreen {
    width: 1920px;
    height: 1080px;
    overflow: hidden;
    position: fixed;
    top: 50%;
    left: 50%;
    transform-origin: left top;
}

上面的实现,其实不用translate也行的,但是页面的高度在某些屏幕下会被压扁,因为屏幕尺寸和设计图的宽高比不一致,有兴趣的自己尝试了

关于绑定数据

为了可读性,一般都把页面按模块分割成组件引入使用的。数据的绑定,一般2种情况:

1、大屏的数据一个接口全部返回

这种情况,给每个需要数据的组件设置props属性,然后在主页面请求数据,传参就行,具体看代码了,不复杂。

2、每个图表模块都单独一个接口返回数据

这种情况就在对应组件请求数据,绑定数据就行了

代码总览

涉及的文件如下(具体参考代码):

|-- src
    |-- views
        |-- bigscreen    // 实例所在
            |-- index.vue
            |-- index.scss
            |-- index.js
            	|--components
            		|-- header.vue
            		|-- leftView
            			|-- index.vue
            			|-- index.scss
            			|-- index.js
            		|-- rightView
            			|-- index.vue
            			|-- index.scss
            			|-- index.js
            		|-- centerView
            			|-- index.vue
            			|-- index.scss
            			|-- index.js
            		|-- bottomView
            			|-- index.vue
            			|-- index.scss
            			|-- index.js
	|-- utils
		|---utils.js
	|-- styles
		|-- box.scss	// 大屏共用样式

代码

代码总览的目录去代码里找着看就行了。

总结

大屏的布局,各种各样,自己看情况修改了,这里只是做个例子。这里的方案,可以保证设定尺寸下的页面,以设定尺寸为基础缩放,达到响应式的效果。现在做的项目,大多数都是以1920x1080的设计图来做,和蓝湖配合,基本可以很简单的就达到设计图90%+的效果,剩下的10%,主要是因为地图无法百分百的随意还原,其它部分都是可以完美实现的。

拓展

数据可视化,图表的实现,用的是 Echarts,至今做了不少大屏项目,总结的一套用法,比较成熟和稳定了,Echarts的使用可参考以下

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值