You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在vis.js的groups列中显示图片(附效果示例)

嘿,这就教你怎么在vis.js的groups里实现带图片的显示效果,和你示例图里的样子完全匹配!

核心思路

要实现这个效果,我们主要利用vis.js支持HTML格式的分组标签,以及可选的节点图片配置——前者用来让分组的图例/标题旁显示图片,后者可以让同组节点统一显示图片图标。

具体步骤&代码示例

1. 准备资源

先把要用到的图片准备好,确保路径可访问(可以是本地相对路径、CDN地址,甚至base64编码的图片)。

2. 编写代码

首先引入vis.js的库(如果还没引入的话),然后配置分组和节点:

<!-- 先引入vis.js -->
<script src="https://unpkg.com/vis-network/standalone/umd/vis-network.min.js"></script>
<!-- 网络容器 -->
<div id="network" style="width: 100%; height: 600px;"></div>
// 1. 定义节点数据,指定每个节点所属分组
const nodes = new vis.DataSet([
  { id: 1, label: "前端节点", group: "frontend" },
  { id: 2, label: "UI节点", group: "frontend" },
  { id: 3, label: "后端节点", group: "backend" },
  { id: 4, label: "数据库节点", group: "backend" }
]);

// 2. 配置Groups,重点是用HTML作为分组标签
const groups = {
  frontend: {
    // 分组标签用HTML插入图片+文字,通过inline CSS调整样式
    label: '<img src="path/to/frontend-icon.png" style="width:22px; height:22px; vertical-align:middle; margin-right:6px;"> 前端组',
    // 可选:让同组节点显示统一图片图标
    shape: "circularImage", // 圆形图片,也可选image(方形)
    image: "path/to/frontend-node-icon.png",
    size: 32
  },
  backend: {
    label: '<img src="path/to/backend-icon.png" style="width:22px; height:22px; vertical-align:middle; margin-right:6px;"> 后端组',
    shape: "circularImage",
    image: "path/to/backend-node-icon.png",
    size: 32
  }
};

// 3. 配置网络选项,开启图例(图例会自动同步分组的带图标签)
const options = {
  groups: groups,
  legend: {
    enabled: true,
    position: "right" // 图例位置,可选top/left/right/bottom
  },
  // 其他可选配置,比如节点颜色、布局等
  nodes: {
    borderWidth: 2
  }
};

// 4. 初始化网络实例
const container = document.getElementById("network");
const network = new vis.Network(container, { nodes }, options);

关键注意点

  • 图片路径问题:如果用本地图片,确保路径是相对HTML文件的正确路径;如果遇到跨域问题,可以把图片转成base64编码直接嵌入。
  • 样式调整:通过inline CSS可以调整图片的大小、间距、对齐方式,让它和文字搭配更协调。
  • 节点图片可选:如果不需要同组节点显示图片,只保留label的HTML配置即可,图例依然会显示带图的分组标题。

这样配置后,你就能得到和示例图一样的、分组旁带图片的效果啦!

内容的提问来源于stack exchange,提问作者Dorian Seguin

火山引擎 最新活动