javascript – 动态箭头颜色

前端之家收集整理的这篇文章主要介绍了javascript – 动态箭头颜色前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用D3绘制有向非循环图,我希望能够通过将边(和箭头)的颜色更改为该路径来突出显示所选节点的路径.我很容易改变边缘颜色,但我无法弄清楚如何改变相应箭头的颜色.我发现的 most applicable source表明这是不可能的,但它也是从大约两年前开始的,所以我希望看看情况是否有所改变.我用来创建链接,箭头和更新链接颜色的代码如下:
  1. graph.append("svg:defs").selectAll("marker")
  2. .data(["end"])
  3. .enter().append("svg:marker")
  4. .attr("id",String)
  5. .attr("viewBox","0 -5 10 10")
  6. .attr("refX",20)
  7. .attr("refY",0)
  8. .attr("markerWidth",6)
  9. .attr("markerHeight",6)
  10. .attr("orient","auto")
  11. .style("fill","gray")
  12. .append("svg:path")
  13. .attr("d","M0,-5L10,0L0,5");
  14.  
  15. . . .
  16.  
  17. var link = graph.append("svg:g").selectAll("line")
  18. .data(json.links)
  19. .enter().append("svg:line")
  20. .style("stroke","gray")
  21. .attr("class","link")
  22. .attr("marker-end","url(#end)");
  23.  
  24. . . .
  25.  
  26. function highlightPath(node) {
  27. d3.selectAll("line")
  28. .style("stroke",function(d) {
  29. if (d.target.name == node) {
  30. highlightPath(d.source.name);
  31. return "lightcoral";
  32. } else {
  33. return "gray";
  34. }
  35. });
  36. }

任何建议都会很棒.谢谢.

解决方法

创建一个函数并给它一个返回值,val应该是动态的:
  1. function marker (color) {
  2. var val;
  3. graph.append("svg:defs").selectAll("marker")
  4. .data([val])
  5. .enter().append("svg:marker")
  6. .attr("id",String)
  7. .attr("viewBox","0 -5 10 10")
  8. .attr("refX",20)
  9. .attr("refY",0)
  10. .attr("markerWidth",6)
  11. .attr("markerHeight",6)
  12. .attr("orient","auto")
  13. .style("fill",color)
  14. .append("svg:path")
  15. .attr("d",5");
  16. return "url(#" +val+ ")";
  17. }
  18.  
  19. var link = graph.append("svg:g").selectAll("line")
  20. .data(json.links)
  21. .enter().append("svg:line")
  22. .style("stroke","gray")
  23. .attr("class","link")
  24. .attr("marker-end",marker); //"url(#end)"

猜你在找的JavaScript相关文章