【发布时间】:2021-04-07 23:18:34
【问题描述】:
我正在使用 vis.js 库,并通过 svg 标记使用自定义 HTML 呈现节点。
我的在线项目在:https://stackblitz.com/edit/visjs-with-angular
我遇到的问题是当我尝试将图像添加到div 时,它位于svg 内。
您可以在我的项目的“app\app\vis”文件夹中看到vis.component.ts,及其关联的 HTML 视图文件。
在drawSvgNetwork() 函数中,您将看到我构建 SVG 的位置。我想我可以添加一个带有background-image url 的<i> 标签,但是当 vis.js 渲染节点时它似乎没有渲染:
var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="390" height="65">' +
'<rect x="0" y="0" width="100%" height="100%" fill="#7890A7" stroke-width="20" stroke="#ffffff" ></rect>' +
'<foreignObject x="15" y="10" width="100%" height="100%">' +
'<div xmlns="http://www.w3.org/1999/xhtml" style="font-family:Arial; font-size:30px">' +
' <em>I</em> am' +
'<span style="color:white; text-shadow:0 0 20px #000000;">' +
' HTML in SVG!</span>' +
// * THIS IMAGE IS NOT RENDERING *
'<i style="background-image: url(https://openclipart.org/download/280615/July-4th-v2B.svg);"></i>' +
'</div>' +
'</foreignObject>' +
'</svg>';
即这是您在运行我的在线项目时将看到的内容。
*供参考:
完整的在线示例位于:https://visjs.github.io/vis-network/examples/ 而具体的demo页面在这里(查看源码看js代码):https://visjs.github.io/vis-network/examples/network/nodeStyles/HTMLInNodes.html
【问题讨论】:
标签: javascript angular vis.js