# echarts大屏展示项目 **Repository Path**: syriansoldier/echarts ## Basic Information - **Project Name**: echarts大屏展示项目 - **Description**: echars大屏展示项目, pc端适配采用flexible + rem + 媒体查询方案. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2022-04-11 - **Last Updated**: 2024-05-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## eDAY01-可视化项目 ### 01-项目介绍 应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出。我们引入 '立可得' 数据可视化项目。 该项目除了使用了基础的DIV+CSS布局,还引入了一些C3技术,还引入了各类图表的绘制,以及高级的地图数据可视化案例。主要功能有:饼状图、柱状图、线形图、地图 ...  ### 02-使用技术 完成该项目需要具备以下知识: - div + css 布局 - flex 布局 - css3动画 - css3渐变 - css3边框图片 - 原生js + jquery 使用 - rem适配 - **echarts基础** 粗略代码统计: - css 580行 - html 450行 - js 400行 (有效) ### 03-Echarts-介绍 > ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 [ZRender](https://github.com/ecomfe/zrender),提供直观,交互丰富,可高度个性化定制的数据可视化图表。 大白话: - 是一个JS插件 - 性能好可流畅运行PC与移动设备 - 兼容主流浏览器 - 提供很多常用图表,且可**定制**。 - [折线图](https://www.echartsjs.com/zh/option.html#series-line)、[柱状图](https://www.echartsjs.com/zh/option.html#series-bar)、[散点图](https://www.echartsjs.com/zh/option.html#series-scatter)、[饼图](https://www.echartsjs.com/zh/option.html#series-pie)、[K线图](https://www.echartsjs.com/zh/option.html#series-candlestick) ### 04-Echarts-体验 官方教程:[五分钟上手ECharts](https://www.echartsjs.com/zh/tutorial.html#5 分钟上手 ECharts) 自己步骤: - 下载echarts https://github.com/apache/incubator-echarts/tree/4.5.0 - 引入echarts `dist/echarts.min.js` - 准备一个具备大小的DOM容器 ```html
``` - ###### 初始化echarts实例对象 ```js var myChart = echarts.init(document.getElementById('main')); ``` - 指定配置项和数据(option) ```js var option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: { type: 'value' }, series: [{ data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line' }] }; ``` - 将配置项设置给echarts实例对象 ```js myChart.setOption(option); ``` ### 05-Echarts-基础配置 > 需要了解的主要配置:`series` `xAxis` `yAxis` `grid` `tooltip` `title` `legend` `color` - series - 系列列表。每个系列通过 `type` 决定自己的图表类型 - 大白话:图标数据,指定什么类型的图标,可以多个图表重叠。 - xAxis:直角坐标系 grid 中的 x 轴 - boundaryGap: 坐标轴两边留白策略 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。 - yAxis:直角坐标系 grid 中的 y 轴 - grid:直角坐标系内绘图网格。 - title:标题组件 - tooltip:提示框组件 - legend:图例组件 - color:调色盘颜色列表 数据堆叠,同个类目轴上系列配置相同的`stack`值后 后一个系列的值会在前一个系列的值上相加。 演示代码: ```js var option = { color: ['pink', 'blue', 'green', 'skyblue', 'red'], title: { text: '我的折线图' }, tooltip: { trigger: 'axis' }, legend: { data: ['直播营销', '联盟广告', '视频广告', '直接访问'] }, grid: { left: '3%', right: '3%', bottom: '3%', // 当刻度标签溢出的时候,grid 区域是否包含坐标轴的刻度标签。如果为true,则显示刻度标签 // 如果left right等设置为 0% 刻度标签就溢出了,此时决定是否显示刻度标签 containLabel: true }, toolbox: { feature: { saveAsImage: {} } }, xAxis: { type: 'category', // 坐标轴两边留白策略 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。 boundaryGap: false, data: ['星期一', '星期二', '周三', '周四', '周五', '周六', '周日'] }, yAxis: { type: 'value' }, series: [ { name: '直播营销', // 图表类型是线形图 type: 'line', data: [120, 132, 101, 134, 90, 230, 210] }, { name: '联盟广告', type: 'line', data: [220, 182, 191, 234, 290, 330, 310] }, { name: '视频广告', type: 'line', data: [150, 232, 201, 154, 190, 330, 410] }, { name: '直接访问', type: 'line', data: [320, 332, 301, 334, 390, 330, 320] } ] }; ``` ### 06-REM适配 - 设计稿是1920px - PC端适配: 宽度在 1024~1920之间页面元素宽高自适应 1. flexible.js 把屏幕分为 24 等份 2. cssrem 插件的基准值是 80px 插件-配置按钮---配置扩展设置--Root Font Size 里面 设置。 但是别忘记重启vscode软件保证生效 3. 要把屏幕宽度约束在1024~1920之间有适配,实现代码: ```js // 实现rem适配 @media screen and (max-width: 1024px) { html { font-size: 42.66px !important; } } @media screen and (min-width: 1920px) { html { font-size: 80px !important; } } ``` ### 07-基础布局 html结构: ```html ``` - 效果图: 1920px * 1078px - body 设置背景图 ,行高1.15 - viewport 主体容器,限制最小宽度1024px,与最大宽度1920px,最小高度780px。 - 需要居中显示 - 使用logo.png做为背景图,在容器内显示 - 内间距 88px 20px 0 - column 列容器,分三列,占比 3:4:3 - 中间容器外间距 32px 20px 0 css样式: ```css /* 基础布局 */ body{ font-family: Arial, Helvetica, sans-serif; margin: 0; padding: 0; font-size: 0.5rem; line-height: 1.15; background: url(../images/bg.jpg) no-repeat 0 0 / cover; } h4,h3,ul{ margin: 0; padding: 0; font-weight: normal; } ul{ list-style: none; } a{ text-decoration: none; } .viewport{ max-width: 1920px; min-width: 1024px; margin: 0 auto; min-height: 780px; padding: 3.667rem 0.833rem 0; background: url(../images/logo.png) no-repeat 0 0 / contain; display: flex; } .column{ flex: 3; position: relative; } .column:nth-child(2){ flex: 4; margin: 1.333rem 0.833rem 0; } ``` ### 08-边框图片 > css3中自适应边框图片运用:  组合写法: ```css border-image: url("images/border.jpg") 167/20px round; ``` 拆分写法: ```css border-image-source: url("images/border.jpg"); border-image-slice: 167 167 167 167; border-image-width: 20px; border-image-repeat: round; ``` 解释: - 边框图片资源地址 - 裁剪尺寸(上 右 下 左)单位默认px,可使用百分百。 - 边框图片的宽度,默认边框的宽度。 - 平铺方式: - stretch 拉伸(默认) - repeat 平铺,从边框的中心向两侧开始平铺,会出现不完整的图片。 - round 环绕,是完整的使用切割后的图片进行平铺。 DEMO代码: ```html
- 面板 .panel
- 容器 .inner 内边距是 上下24px 左右 36px
```css
/* 公共面板样式 */
.panel {
position: relative;
border: 15px solid transparent;
border-width: .6375rem .475rem .25rem 1.65rem;
border-image-source: url(../images/border.png);
border-image-slice: 51 38 20 132;
margin-bottom: .25rem;
}
.inner {
position: absolute;
top: -0.6375rem;
left: -1.65rem;
right: -0.475rem;
bottom: -0.25rem;
padding: .3rem .45rem;
}
.panel h3 {
font-size: 0.25rem;
color: #fff;
font-weight: 400;
}
```
### 10-概览区域(overview)-布局
html结构:
```html