产品有个需求,需要用echarts画一颗树,原型大概这样

然后看了下官网,echarts的树图大概如下,呃呃呃,差好多,那就改呗

然后一顿操作页面出来差不多了,思路大概如下,左边那个灰色按钮是自己写的,总体数据是一颗树,我把第一层的label和line隐藏 实际效果就差不多了

然后发现有个问题,echarts树的点击事件只能绑定在前面的symbol(圆点)上,象征性的问了下产品,果不其然,被产品怼了回来,然后各种搜索,也没找到自己想要的结果,那只能自己手写了

我大概讲下我的思路啊,大概就是把symbol定位在字上面就行,前面的圆点用label的formatter进行富文本标签展示,效果大概就出来了,只要把symnol的背景色变透明即可(transparent)

下面是代码, 没有左边的标签,数据纯属伪造,如有雷同,我也不管,可以直接去echats社区执行

const data = {name: '腾讯',label: {normal: {position: 'center',verticalAlign: 'middle',align: 'left',backgroundColor: '#54627B',borderRadius: 28,color: '#fff',padding: [14, 42],}},itemStyle: {opacity: 0,},children: [{name: '和平精英',}, {name: 'CF',}, {name: 'LOL',}, {name: 'DNF',}, {name: '欢乐斗地主',}, {name: '天天酷跑',}, {name: '我的侠客',}, {name: '天涯明月刀',}, {name: '王者荣耀',selected: true,children: [{name: '小乔',}, {name: '大乔'}, {name: '孙尚香 '}, {name: '蔡文姬'}, {name: '女娲'}]}, {name: '宏图之下',}, {name: 'QQ飞车',}, {name: 'QQ炫舞',}, {name: '部落冲突',}]};const leftOffset = data.children.filter((item) => item.selected === true)[0].name.length * -13 - 10;const totalNum = 344;let maxLength = 0;data.children.forEach((item) => {maxLength = item.name.length * 13 > maxLength ? item.name.length * 13 : maxLength;})data.children.forEach((item) => {//   item.symbolOffset = [leftOffset, 0];const length = item.name.length * 13;console.log(length)item.level = 1;item.lineStyle = {color: 'none'};item.symbolSize = [maxLength, 13];item.symbolOffset = [leftOffset / 2 - 10, 0];item.label = {offset: [-maxLength - 10, 0],formatter: `{greyCircle|}{txtPadding|${item.name}}`};item.itemStyle = {color: 'transparent'};if (item.children && item.children.length) {item.label = {color: '#009FFF',offset: [-maxLength - 10, 0],formatter: `{blueCircle|}{txtBluePadding|${item.name}}`};// item.children.push({//   totalNum,//   name: `总计${totalNum}条`// });item.children.forEach((ele, index) => {ele.itemStyle = {color: '#009FFF'};ele.label = {color: '#009FFF',};ele.symbolSize = 10;ele.symbol = 'image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAA1UlEQVRoQ+2ZMQoCQRAEZw0EBTOT+5Gxgb80MvBHYmIkggpycqlRU3AgS128AzPVRSfXqpOvdXJHeci/JWkiSSKb07hdvuo8vX0vanfft1syR97Mmsj6OA6rqsu02PNTw+PQrmTJZMZDEkomklD6eaNaCTTVSiipFqCkWgCarZVAU62Ekq0FKKkWgGZrJdBUK6FkawFKqgWg2VoJNNVKKNlagJJqAWi2VgJNtRJKthagpFoAmq2VQFOthJKtBSh183sa3I5HZm0tvBUY9BAAbdaRbhL5AimzGEK+kjc4AAAAAElFTkSuQmCC';//   if (item.children.length === index + 1) {//     ele.isLastOne = true;//     ele.label.formatter = `{black|总计}${ele.totalNum}{black|条}`;//     ele.lineStyle = {//       color: 'none'//     };//     ele.symbolSize = 1;//     ele.label.offset = [6, 0];//   }});} else {}});option = {tooltip: {trigger: 'item',triggerOn: 'mousemove'},series: [{type: 'tree',data: [data],left: '25%',right: '40%',symbolSize: 7,symbol: 'rect',label: {normal: {position: 'right',verticalAlign: 'middle',align: 'left',backgroundColor: 'transparent',color: '#000',padding: [150, 7],rich: {black: {color: '#000'},greyCircle: {backgroundColor: '#D8D8D8',width: 8,height: 8,borderRadius: 4,},blueCircle: {backgroundColor: '#009FFF',width: 8,height: 8,borderRadius: 4},txtPadding: {color: '#000',padding: [0, 0, 0, 10],},txtBluePadding: {color: '#009FFF',padding: [0, 0, 0, 10],}}},},itemStyle: {borderWidth: 0,},lineStyle: {color: 'rgba(0, 159, 255, 0.6)'},leaves: {label: {normal: {position: 'right',verticalAlign: 'middle',align: 'left',backgroundColor: 'transparent',color: '#000',padding: 7,}},},expandAndCollapse: true,animationDuration: 0,animationDurationUpdate: 750}]};

假数据效果如下呢

如何实现echarts树点击节点名称也可以实现展开收起(直接更改options即可)相关推荐

  1. 基于echarts树图画组织结构图

    基于echarts树图画组织结构图 注:新版本echarts已有折线树图绘制功能(Tree with Polyline),本法适合v4.2.1之前版本 1.下载echarts插件 官网地址:https ...

  2. echarts tree默认展开_echarts tree控制节点的展开收起

    echarts使用版本 v4版本 需求 当数据量比较大时,tree的子节点会挤在一起,这不是产品想要的效果 产品期望点击某一子节点时,其他同级节点自动收起,效果如下 echarts官方文档并没有提供类 ...

  3. echarts树状图点击展开子节点_CPU眼里的结构设备树节点及属性详解

    1 设备树(device tree)简介DTSpec定义一个devicetree的约束来描述硬件设备,boot引导程序将设备树传递给用户程序的内存空间中,并传递给用户相应设备树的指针.设备树为一个树形 ...

  4. 树点击节点导航在数据筛选显示和查看内容

    2013年11月07日 二〇一三年十月初五|立冬 癸巳[蛇]癸亥月丁丑日甲辰时 纳音五行:长流水. 达摩祖师圣诞 private void 树TreeView_NodeMouseClick(objec ...

  5. echarts树点击label事件_ECharts 堆积木(砖块)游戏

    最近突发奇想,用 3D 的堆叠柱图,做了一个搭积木的小游戏. 主要思路 用一个几乎透明的 series-bar3D 铺满整个 grid3D,作为操作区,监听鼠标点击事件.完成堆积木的操作: 用多层数据 ...

  6. echarts世界地图中的国家名称显示中文

    export const nameMap = { "Singapore Rep.": "新加坡", "Dominican Rep.": &q ...

  7. echarts树状图点击展开子节点_Echarts树形图展开和收缩

    一.实现效果 收缩效果: 展开效果: 二.实现代码 展开/收缩 切换 ; var dom = document.getElementById("container"); var m ...

  8. echarts树状图怎么设置主节点和子节点的距离_教你秒懂CAD出图比例正确设置技巧...

    1.你知道你用CAD画出的图打印出来会是多大吗? 2.你知道你图中标注文字打印出来字高是多少mm吗? 3.你能确定你画的1:100的图打印出来比例确实是1:100吗? 这个问题乍一看似乎简单,研究起来 ...

  9. ios 圆形旋转菜单_iOS高级动画:圆形树展开收起动画

    转自:标哥的技术博客,作者:黄仪标(微博) 前段时间帮某某做了一个动画效果,今天分享给大家.关于动画的基础知识,这里不会细说,如果您还没有核心动画的基础知识,请先阅读相关文章,了解核心动画如何使用,然 ...

最新文章

  1. node_modules中包不完整的解决方法
  2. vim全局搜索并跳转
  3. 微信小程序之下拉加载和上拉刷新
  4. mysql 并行 更新_MySQL 并行复制(MTS) 从库更新的记录不存在实际却存在
  5. 在vue组件中使用vuex的state状态对象的5种方式
  6. Java的各种打包方式
  7. 使您的Java 8方法引用生效
  8. kotlin编译失败_Kotlin使用GraalVM开发原生命令行应用
  9. linux定时器错误使用,linux下定时器的使用
  10. SpringCloud发现服务代码(EurekaClient,DiscoveryClient)
  11. mysql必知必会样例表_《SQL必知必会》笔记1-样例表说明及建表语句
  12. 反激式开关电源电路的测试记录(一)
  13. RTl8188EUS设置ap模式
  14. java实现高德地图经纬度转换成百度地图
  15. qPCR定量方法在肠道微生物特定种属定量应用
  16. 记一次前端实习生面试
  17. drools 6.5 决策表使用
  18. QA团队和测试团队的关系
  19. #今日论文推荐#CVPR 2022 | 道高一尺,魔高一丈,ConvNet还是ViT?
  20. [ArcGIS] 空间分析(八) 水文分析

热门文章

  1. 未来的智能家居产品,主要的销售场景
  2. AE2018插件AfterCodecs v1.9.0安装教程,(AE mp4)
  3. ps图片粘贴进去怎么变小
  4. A股市场的市场分类(股票市场简介及历史)
  5. SimpleDateFormat用法
  6. Foxmail公司邮箱配置
  7. 设计模式之——享元设计模式
  8. 编译类型和运行时类型不同_不同类型的游戏
  9. 开窗函数(分析函数)使用详解
  10. 【11.9】Codeforces 刷题