【问题标题】:Complex heirarchical tree layout复杂的层次树布局
【发布时间】:2013-02-19 10:06:19
【问题描述】:

我需要创建一个分层树 (something like this),但我需要一些功能:

  1. 能够随心所欲地设计节点(大小、背景图像、字体等)
  2. 自动布局
  3. 能够通过拖放 N' 连接节点

我看过GoJs,它很棒,但它是基于画布的,我无法找到一种方法让节点看起来完全符合我的要求(实际上甚至不是很接近)。

我也看过d3.js,这也很棒,但同样,因为它是 SVG,所以很难设计节点。

这里的主要工作是布局和连接节点,我可以处理 Drag N' Drop 我自己,是否有一个库可以为我处理布局,所以我可以创建所需的 div,设计我认为合适的它们并让图书馆只做布局的东西?

【问题讨论】:

    标签: javascript jquery html tree d3.js


    【解决方案1】:

    这里有一些示例库。

    如果您想避免使用画布,请尝试为以下内容实现拖放

    CSS3 Family Tree

    SlickMap

    或者查看一些基于画布的库

    JavaScript InfoVis Toolkit's HyperTree / SpaceTree

    jsPlumb

    【讨论】:

      【解决方案2】:

      虽然答案较晚,但希望它可以在将来对其他人有所帮助。 这是一个使用出色的 D3.js 库的拖放树。

      http://bl.ocks.org/robschmuecker/7880033

      https://gist.github.com/robschmuecker/7880033

      示例中的树处理自动布局/调整大小、缩放、平移、拖放并且是可折叠的。如果需要,可以删除所有方面或不删除任何方面。

      【讨论】:

      • 这是一个很酷的解决方案,但是对于任何大量节点来说都非常糟糕。
      • @VectorGorgoth 嗨,你看过我的例子有 50,000 个节点吗? bl.ocks.org/robschmuecker/7926762这与这里的另一个问题有关stackoverflow.com/questions/20539922/…
      • JS 通常可以很好地处理内存中的 100k+ 个节点。想办法渲染它们——这是另一个问题。没有窗口或剪裁,因此大约 1,000 个节点以上的扩展树非常慢。
      • @VectorGorgoth 是的,我同意,这在大量扩展节点上确实变得有些麻烦。虽然阈值在某种程度上取决于硬件,但使用上面的示例,将 JSON 数量减少到 2800 个节点,我仍然可以在所有节点扩展的情况下获得可接受的性能。 jsfiddle.net/E4TXc 但是,对于高于此的任何内容,它肯定会变得迟缓/无法使用,具体取决于扩展节点的数量。
      • 您是否考虑过某种视口计算方法,它会忽略 SVG 中既未连接到可见节点又位于当前窗口坐标之外的节点? (使用 D3 可以轻松实现这样的事情吗?)
      猜你喜欢
      • 2012-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多