目录

1、官网找样例

2、初步改造示例,有个雏形

3、细节改造和优化

4、全部代码

5、原始效果和完成效果对比

​碎碎念:


UI效果图是这样的

看到之后我一脸懵,按照常规阶梯思路,我又开始了度娘之旅。

1、官网找样例

样例官网地址

把样例的option复制到本地,

原始option代码:

let demoOption = {title: {text: 'Funnel'},tooltip: {trigger: 'item',formatter: '{a} <br/>{b} : {c}%'},toolbox: {feature: {dataView: { readOnly: false },restore: {},saveAsImage: {}}},legend: {data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order']},series: [{name: 'Expected',type: 'funnel',left: '10%',width: '80%',label: {formatter: '{b}Expected'},labelLine: {show: false},itemStyle: {opacity: 0.7},emphasis: {label: {position: 'inside',formatter: '{b}Expected: {c}%'}},data: [{ value: 60, name: 'Visit' },{ value: 40, name: 'Inquiry' },{ value: 20, name: 'Order' },{ value: 80, name: 'Click' },{ value: 100, name: 'Show' }]},{name: 'Actual',type: 'funnel',left: '10%',width: '80%',maxSize: '80%',label: {position: 'inside',formatter: '{c}%',color: '#fff'},itemStyle: {opacity: 0.5,borderColor: '#fff',borderWidth: 2},emphasis: {label: {position: 'inside',formatter: '{b}Actual: {c}%'}},data: [{ value: 30, name: 'Visit' },{ value: 10, name: 'Inquiry' },{ value: 5, name: 'Order' },{ value: 50, name: 'Click' },{ value: 80, name: 'Show' }],// Ensure outer shape will not be over inner shape when hover.z: 100}]
};

得到的效果是这样的:

2、初步改造示例,有个雏形

  • 去掉图例legend
  • 剥离外层漏斗图
  • 去掉小工具栏和标题

代码改动的地方:

 

得到的效果如下图:

3、细节改造和优化

接下来就开始精修之路^_^

  • 去掉白色边线
  • 数据元素减少为3个
  • 增加元素之间的缝隙
  • 调整漏斗外形,尤其是底部不是小尖角
  • 设置每个元素对应的颜色和要显示的内容

为此代码需要做的改动:

4、全部代码

想要的形状出来之后剩余的就是调整合适大小和背景图。

<template><!-- 漏斗图对比 --><div class="con_bg"><div class="funnelChart" ref="funnelChart"></div><!--echarts实例代码--><div class="funnelDemo" ref="funnelChartDemo"></div></div>
</template>
<script>
import * as echarts from "echarts";var chart = "";
var chartDemo = "";
var funnelChart = "";
export default {name: "",data() {return {};},mounted() {this.showfunnelChart();this.showfunnelChartDemo();},methods: {showfunnelChart() {if (funnelChart != null &&funnelChart != "" &&funnelChart != undefined) {funnelChart.dispose();}funnelChart = echarts.init(this.$refs.funnelChart);let option = {tooltip: {trigger: "item",formatter: "{b} : {c}%",},series: [{name: "Actual",type: "funnel",//left: "10%",//width: "80%",//top和bottom结合来拉伸漏斗的高度top: 0, //漏斗图组件离容器上侧的距离bottom: 0, //漏斗图组件离容器下侧的距离//min和max结合来调整漏斗是敞口还是窄扣min: 10,max: 100,minSize: "48", //数据最小值映射的宽度。如果是0就变成了常规的小尖角maxSize: "148",label: {position: "inside",formatter: "{c}%",color: "#fff",},gap: 4, //设置缝隙大小//图形样式设置// itemStyle: {//     opacity: 0.5,//     borderColor: "#fff",//注水掉,相当于去掉白边//     borderWidth: 2,// },//高亮的标签和图形样式。emphasis: {label: {fontSize: 20,// position: "inside",// formatter: "{b}Actual: {c}%",},},data: [{value: 168,name: "疑似问题",itemStyle: {color: "#1FCFDE",borderColor: "none",},},{value: 50,name: "已确认问题",itemStyle: {color: "#ED9A13",borderColor: "none",},},{value: 10,name: "已解决问题",itemStyle: {color: "#06C90F",borderColor: "none",},},],// Ensure outer shape will not be over inner shape when hover.z: 100,},],};funnelChart.clear();funnelChart.setOption(option);window.addEventListener("resize", () => {funnelChart.resize();});},showfunnelChartDemo() {if (chartDemo != null &&chartDemo != "" &&chartDemo != undefined) {chartDemo.dispose();}chartDemo = echarts.init(this.$refs.funnelChartDemo);let demoOption = {title: {text: "Funnel",},tooltip: {trigger: "item",formatter: "{a} <br/>{b} : {c}%",},toolbox: {feature: {dataView: { readOnly: false },restore: {},saveAsImage: {},},},legend: {data: ["Show", "Click", "Visit", "Inquiry", "Order"],},series: [{name: "Expected",type: "funnel",left: "10%",width: "80%",label: {formatter: "{b}Expected",},labelLine: {show: false,},itemStyle: {opacity: 0.7,},emphasis: {label: {position: "inside",formatter: "{b}Expected: {c}%",},},data: [{ value: 60, name: "Visit" },{ value: 40, name: "Inquiry" },{ value: 20, name: "Order" },{ value: 80, name: "Click" },{ value: 100, name: "Show" },],},{name: "Actual",type: "funnel",left: "10%",width: "80%",maxSize: "80%",label: {position: "inside",formatter: "{c}%",color: "#fff",},itemStyle: {opacity: 0.5,borderColor: "#fff",borderWidth: 2,},emphasis: {label: {position: "inside",formatter: "{b}Actual: {c}%",},},data: [{ value: 30, name: "Visit" },{ value: 10, name: "Inquiry" },{ value: 5, name: "Order" },{ value: 50, name: "Click" },{ value: 80, name: "Show" },],// Ensure outer shape will not be over inner shape when hover.z: 100,},],};chartDemo.clear();chartDemo.setOption(demoOption);window.addEventListener("resize", () => {chartDemo.resize();});},},
};
</script>
<style scoped>
.con_bg {/* background-color: #010c17; */background-image: url("/img/bg.png");width: 490px;height: 590px;border-radius: 3px;position: absolute;left: 50%;top: 50%;-webkit-transform: translate(-50%, -50%);
}
.funnelChart {width: 424px;height: 152px;background-image: url("/img/ld.png");margin: 20px auto;
}.funnelDemo {width: 424px;height: 152px;background-image: url("/img/ld.png");margin: 20px auto;
}
</style>

5、原始效果和完成效果对比

其实和效果图还是有一定差距,但是已经尽力还原

碎碎念:

其实每次拿到UI效果图的时候,我就很激动,因为毕竟是别人的一次创作,但是在实际开发过程中,我也经常思考,到底应该是尽力还原效果图,还是让美工在做效果图的时候多考虑实现的难易程度呢?这中间又该如何找到对应的平衡点呢?答案肯定是无解的。

但是我在工作中也遇到了有些前端为了让自己少写代码,比如能一张背景图解决的就尽量不写css,在还原效果图的过程中更是扯皮说是不好实现,让美工做的简单点。我觉得这样就真的有些过分了,一点都不愿意多思考,当然最后出来的效果不至于差强人意,但也只能just soso……我从心里是特别鄙视的。

所以看到这篇文章的你,是否在心底问过自己:真的尽力了吗?真的到了实现不了的地步吗?

如果说UI图100分的标准,你又能做到多少分的还原呢??

echarts漏斗图自定义漏斗颜色、粗细、大小、间隔缝隙相关推荐

  1. echarts雷达图自定义射线颜色、边框效果和背景样式

    目录 1.在官网找样例 2.初步改造示例,有个雏形 3.细节改造和优化 4.全部代码 5.原始效果和完成效果对比 1.在官网找样例 样例地址:Examples - Apache ECharts 2.初 ...

  2. echarts 水球图 自定义水球颜色

    项目中有一个水球图表示电池电量的需求:电量20%以下时显示红色,20%-30%时显示为黄色,30%以上显示蓝色 var option = {series: [{type: 'liquidFill',d ...

  3. 2019-7-23 [HTML_CSS] 基本 行内/内部/外部格式 优先级 选择器 字体演 颜色 粗细大小 字体对齐

    文章目录 0.网页美化技术 CSS 1 css概述 1.1 什么是CSS? 1.2 CSS的发展史 1.3 CSS的优势 1.4 CSS基本使用 1.5 CSS样式的分类 1.5.1 行内样式 1.5 ...

  4. echarts折线图分段显示颜色

    echarts折线图分段显示颜色 - vue技术交流群(864583465) 1.直接上代码 option = {xAxis: {type: 'category',data: ['Mon', 'Tue ...

  5. 02 【eCharts样式定制系列】玫瑰图、环形饼图、漏斗图自定义各项数据的颜色

    描述 在目前的项目中,根据UI设计稿需要实现一个带有大屏的系统首页,在此首页上要添加地图和一些eCharts图表.但是根据UI设计稿,如果要达到美观的目的,需要对eCharts进行定制.此次需要定制的 ...

  6. Echarts雷达图自定义样式

    效果图: setLeiDaChart(){let myChart = this.$echarts.init(document.getElementById('andonType'));let opti ...

  7. Echarts环形图--自定义图例文本和中心文字

    一.设置环形图中心文字 可用 titel.text 和 title.subtext 来定义中心处的文本 title:{text:subtext: } 用 graphic 原生图形元素组件 每个图形元素 ...

  8. echarts折线图、echarts折线图自定义样式

    html 页面引用js <script type="text/javascript" src="assets/js/echarts.min.js"> ...

  9. echarts折线图节点改变颜色

    更改前 更改后 series: [{name: "收入",type: "line",data: [10, 11, 13, 11, 12, 12, 9],line ...

最新文章

  1. cds.data:=dsp.data赋值有时会出现AV错误剖析
  2. python3 乱序函数 shuffle 简介
  3. libvirt-adabddad
  4. ccna设备的NAT地址转换
  5. Flutter ListView封装,下拉刷新、上拉加载更多
  6. vue中父子组件先后渲染_vue父子组件传值(子传父,非父子组件传值)
  7. [bzoj4881][Lydsy2017年5月月赛]线段游戏
  8. python容量变化类型有哪些_python基础数据类型补充以及编码的进阶
  9. [vscode] markdown_index----可以为你的markdown标题添加序号的插件
  10. 自己在总结前人经验下弄的几个opencv封装函数
  11. 【洛谷 P4291】 [HAOI2008]排名系统(Splay,Trie)
  12. win和linux双系统安装教程
  13. 婚纱摄影后期修片,PS婚纱写真后期…
  14. fedora mysql添加密码_Fedora14下 mysql更改密码
  15. Linux性能基础:CPU、内存、磁盘等概述
  16. DM数据库实例迁移教程
  17. python RTL自动生成_实例16:用Python自动生成Excel档每日领料单
  18. java 汉字笔画_java如何获取笔画
  19. Grad-CAM可视化
  20. QT .pro文件详解

热门文章

  1. 微信小程序常用功能总结(持续更新中~)
  2. hxd查看4G以上hex文件快的很--可文件比较--绿色版
  3. 看懂通信协议——TLV
  4. 读 YYCache 源码解析
  5. Java:1009: 求平均分
  6. tf.reverse 函数的使用
  7. C语言有关转义字符 \ 的问题(附ASCII表)
  8. 鸿合一体机触屏没反应怎么办_鸿合多媒体黑屏 鸿合触控一体机官网
  9. 让啪啪啪的感觉更爽_想什么呢_我说的是机械键盘
  10. 数据类型_array_es6新增的数组遍历方法