项目介绍
本项目主要使用了React、ECharts、TSX、SCSS等技术栈,项目使用Grid以及Flex布局,并采用rem方案实现屏幕大小自适应。项目包含多种类型图表,包括柱形图、折线图、饼图、地图和表格等,所有图例都可以实时更新数据并辅以动画交互。
一、如何使用 rem 和 px 函数适配各种屏幕
1. 计算方法
- Wp 为页面有效宽度,Hp 为页面有效高度
- 页面左右居中,上下居中,四周留白即可
- 然后在 head 里用 JS 设置 1rem = Wp / 100(下文中会用到)
代码示例
<script>
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 string = `<style>html{
font-size: ${pageWidth / 100}px
}</style>`;
document.write(string);
</script>
2. rem
- 假设某 div 在设计稿中长 100px,设计稿宽度 1920px,
- 那么该 div 在页面中长为 100/1920 X 100rem
- 最后可以写一个 px() 函数来计算 100px 对应的 rem
二、如何使用 grid 布局
- Grid布局在本项目中主要用来构建布局框架
- 使用Grid布局的理由:大屏一般是可控的,可以装 Chrome,基本不存在兼容问题;Grid 布局方便了,行、列、间隙都可控
> main {
display: grid;
grid-template:
"box1 box2 box4 box5" 755fr
"box3 box3 box4 box5" 363fr / 366fr 361fr 811fr 747fr;
grid-column-gap: px(28);
grid-row-gap: px(28);
三、如何使用 echarts
使用Echarts 的优点:开发效率高;缺点:可定制性一般,部分图形不能设置理想样式。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>ECharts</title>
<!-- 引入下载的 ECharts 文件 -->
<script src="echarts.js"></script>
</head>
<body>
<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
<div id="main" style="width: 600px;height:400px;"></div>
<script type="text/javascript">
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 指定图表的配置项和数据
var option = {
title: {
text: 'ECharts 入门示例'
},
tooltip: {},
legend: {
data: ['销量']
},
xAxis: {
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
},
yAxis: {},
series: [
{
name: '销量',
type: 'bar',
data: [5, 20, 36, 10, 10, 20]
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
</script>
</body>
</html>