可视化项目总结

183 阅读2分钟

技术栈:Vue、VueRouter、Echarts (原作者技术栈为React)

这个项目是我在学习前端可视化与 echarts 时,仿照方应杭的开源项目制作而成的。以下是我对该项目做的几点总结,点击这里可以预览此项目。

1.如何适配屏幕

思路

首先设计稿的项目宽高比是16:9

如果屏幕的宽/高大于16:9,我们就需要优先水平方向上局中,然后等比例放大我们的项目,让高度与屏幕高度相同,左右局中。在不超过屏幕尺寸的前提下我们的布局就可以达到最大化。

反过来如果宽/高小于16:9,就要尽量让宽度和屏幕宽度一样,然后垂直居中就OK了。

计算方法

  • Wp 为页面有效宽度
  • Hp 为页面有效高度
  • 页面左右居中,上下居中,四周留白即可
  • 然后在 head 里用 JS 设置 1rem = Wp / 100

适配一个div

div在设计稿的宽度:

image.png

假设一个div在设计稿中长100px,设计稿宽度为2420px,那么div在页面中的长度为100/2420*100rem,用函数表示则为:

 const clientWidth = document.documentElement.clientWidth;
 const clientHeight = document.documentElement.clientHeight;
 window.pageWidth=clientWidth/clientHeight>16/9 ? clientHeight*(16/9) :clientWidth;
 const pageHeight = pageWidth/(16/9)
 const px = (n) => (n / 2420) * (window as any).pageWidth;

div水平垂直居中

水平方向:直接margin:0 auto就可以居中。

垂直方向:可以用浏览器的高度减去div的高度,得到的值除以2,将这个值设置为div的margin-top,div就可以垂直居中了。

  root.style.height =pageHeight+'px'
  root.style.marginTop =(clientHeight-pageHeight)/2+'px'

2.使用 grid 布局

Grid 布局即网格布局,是一种新的 CSS 布局模型,比较擅长将一个页面划分为几个主要区域,以及定义这些区域的大小、位置、层次等关系。

display: grid;
    grid-template:
    grid-template-rows: 755fr 363fr;
    grid-template-columns: 366fr 361fr 811fr 747fr;
    grid-gap: 28 / 2420 * 100rem; //行间距
    grid-template-areas: 'box1 box2 box4 box5'
                       'box3 box3 box4 box5';

3.使用 echarts

首先需要安装echarts

npm install echarts --save

在项目中引用:

import * as echarts from 'echarts';

然后根据官网中的示例来设置自己所要的样式