graph - 3d-force-graph 节点标题的行为类似于(单个)可点击的 url 链接
问题描述
我试图让标题在点击时表现得像超链接。我遵循了堆栈溢出中给出的答案:
但它只适用于双击,标题看起来不像链接(不是下划线),只有节点球体是可点击的,而不是节点标题。总而言之,用户很难说它不是只读网络。
那么,有没有办法可以满足这 3 个要求?
- 单次(短)点击重定向
- 链接节点标题(node.id)而不是节点球体
- 悬停时样式节点标题(下划线或颜色变化)?
这是我的html文件:
<head>
<script src="//unpkg.com/three"></script>
<script src="//unpkg.com/three/examples/js/renderers/CSS2DRenderer.js"></script>
<script src="//unpkg.com/3d-force-graph"></script>
<!-- <script src="../../dist/3d-force-graph.js"></script>-->
</head>
<body>
<div id="3d-graph"></div>
<script>
const Graph = ForceGraph3D({
extraRenderers: [new THREE.CSS2DRenderer()]
})
(document.getElementById('3d-graph'))
.jsonUrl('./datasets/data.json')
.nodeThreeObject(node => {
const nodeEl = document.createElement('div');
nodeEl.textContent = node.id;
nodeEl.style.color = 'white';
nodeEl.className = 'node-label';
return new THREE.CSS2DObject(nodeEl);
})
.nodeThreeObjectExtend(true)
.onNodeClick(function(node){
window.location.href = node.link;
});
</script>
</body>
以下是数据集的结构:
{
"nodes": [
{"id": "Math", "group": 1,"link": "test1.html"},
{"id": "Algebra", "group": 1,"link": "test2.html"},
....
],
"links": [
{"source": "Math", "target": 'Algebra',"value": "2"},
....
]
}
为了更改node.link(node.id而不是node sphere)的目标,我尝试的最后一件事是使用“node.id”作为onNodeCLick函数的参数,但随后出现异常。
为了设置标题的样式(下划线或颜色更改),我为容器提供了一个类(“.node-label:hover”)并尝试使用 css 设置它的样式,但它也不起作用。
对于单击,我完全不知道。
谢谢您的帮助。
解决方案
推荐阅读
- html - CSS 中心 ul 而 li 是文本左对齐
- javascript - 是否可以在 React 中使用流和箭头函数?
- javascript -
全部替换后和在javascript中如何检查字符串是否为空? - javascript - mongoose 上的 save() 函数不起作用
- r - 在 R 中按组使用具有特定样本大小的列表并将其应用于数据集
- excel - 如何从多个文本文件中搜索列表字符串
- apache-flink - 在 RichCoFlatMapFunction 中更新外部数据库
- c# - 在 C# 中的另一个对象内实例化用户定义的对象
- python - 为什么我需要同时从 Crypto 导入 Hash 和从 Crypto.Cipher 导入 PKCS1_OAEP 才能使 Hash.MD5 工作?
- reactjs - 将道具传递给组件:“对象作为 React 子项无效”