# zhoushugang **Repository Path**: ideal-binary/zhoushugang ## Basic Information - **Project Name**: zhoushugang - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 23 - **Created**: 2023-06-21 - **Last Updated**: 2023-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## DAY01-可视化项目 ### 01-项目介绍 应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出。我们引入 '立可得' 数据可视化项目。 该项目除了使用了基础的DIV+CSS布局,还引入了一些C3技术,还引入了各类图表的绘制,以及高级的地图数据可视化案例。主要功能有:饼状图、柱状图、线形图、地图 ...  线上地址:https://zhoushugang.gitee.io/ 布局视频: - 链接:https://pan.baidu.com/s/1EragYLsTH4pn4BSp4aZb4w - 提取码:1rcu 课程目标: - 实践css布局相关技术 - 实践jquery相关技术 - 掌握echarts的基本使用 ### 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
``` - 初始化echart实例 ```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' }] }; ``` - 使用刚指定的配置项和数据显示图表 ```js myChart.setOption(option); ``` ### 05-Echarts-基础配置 > 需要了解的主要配置:`series` `xAxis` `yAxis` `grid` `tooltip` `title` `legend` `color` - series - 系列列表。每个系列通过 `type` 决定自己的图表类型 - 大白话:图表数据,指定什么类型的图标,可以多个图表重叠。 - xAxis:直角坐标系 grid 中的 x 轴 - yAxis:直角坐标系 grid 中的 y 轴 - grid:直角坐标系内绘图网格 - title:标题组件 - tooltip:提示框组件 - legend:图例组件 - color:调色盘颜色列表 演示代码: ```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', name:'线形图' }, { data: [22, 333, 111, 222, 444, 666, 777], type: 'bar', name:'饼状图' }], grid: { show: true }, title: { text: '标题' }, tooltip: { padding: 20 }, legend: { data: ['线形图'] }, color: ['red','green'] }; ``` ### 06-REM适配 > amfe-flexible 手淘前端团队 做移动端rem基准值的动态设置 320px -> 32 375px -> 37.5 - 设计稿是1920px ,约定rem基准值为 24px 。 - 那么:设备宽度与rem基准值比例为 80 。 - 结论:适配设备的时候保持80的比例即可。 - 将来:换算rem单位的时候,使用24px基准值即可。 实现代码,在页面底部加载`index.js`文件实现动态设置基准值逻辑: ```html ``` ```js // 完成rem适配(动态根据页面宽度设置rem的基准值-->html标签font-size) (function(){ // 1. 页面初始化 获取当前页面的宽度 约定页面宽度除以80 计算rem的基准值 设置html标签 var setFont = function() { var html = document.querySelector('html') // document.documentElement 获取文档元素html标签 // 3. 适配区间 1024-1920 之间 var width = html.clientWidth if (width < 1024) { width = 1024 } if (width > 1920){ width = 1920 } var fontSize = width / 80 + 'px' html.style.fontSize = fontSize } setFont() // 2. 在页面尺寸改变的时候 同上 window.onresize = function(){ setFont() } })() ``` 补充:书写css代码,让px转换rem单位,使用一个vscode插件 cssrem - vscode 插件搜索 cssrem 进行安装即可 - 需要在 设置中 cssrem换算的时候使用80的比例(1920的设计稿量取尺寸),基准值是24px ```json // rem 换算 "cssrem.rootFontSize": 24, "cssrem.fixedDigits": 3, "cssrem.autoRemovePrefixZero": false, ``` 加上配置在 json 文件中保存,重新启动vscode即可生效。 ### 07-基础布局 html结构: ```html ``` - 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