CSS 树视图,带有连接节点的线

xot*_*nic 5 html css tree

是否可以仅使用 HTML 和 CSS 创建包含连接节点的线的树组件?我试图避免包含具有 CSS 样式的文本的嵌套节点

请参阅模型作为示例。它深受Autodesk Maya 检查器树的启发

我实现了以下目标,但我不喜欢它,因为线路未连接:

https://codepen.io/xotonic/pen/JRLAOR

HTML:

<ul>
<li class="container"><p><r>Testing</r> </p>
    <ul>
        <li><p><r>Testing 1</r></p></li>
        <li><p><r>Testing 2</r></p></li>
        <li class="container"><p><r>Testing</r> </p>
            <ul>
                <li><p><r>Testing 1</r></p></li>
                <li><p><r>Testing 2</r></p></li>
                <li><p><r>Testing 3</r></p></li>
            </ul>
        </li>
    </ul>
</li>
<li class="container"><p><r>Testing</r> </p>
    <ul>
        <li><p><r>Testing 1</r></p></li>
        <li><p><r>Testing 2</r></p></li>
        <li><p><r>Testing 3</r></p></li>
    </ul>
</li>
<li class="container"><p><r>Testing </r></p>
    <ul>
        <li class="empty"><p><r>empty</r></p></li>
    </ul>
</li>
Run Code Online (Sandbox Code Playgroud)

CSS:

ul, li { list-style: none; margin: 0; padding: 0; }
ul { padding-left: 1em; }
li { padding-left: 1em;
  border: 1px dotted black;
  border-width: 0 0 1px 1px; 
}
li.container { border-bottom: 0px; 
}
li.empty { font-style: italic;
  color: silver;
  border-color: silver;
}
p { margin: 0;
  background: white;
  position: relative;
  top: 0.5em; 
  
}
p:before {
  content: '';
  position: absolute;
  width: 1em;
  border: 1px solid black;
  height: 1em;
  border-radius: 1em;
  margin-left: 0.5em;
}
r {
  margin-left: 2em;
}
ul { 
  border-top: 1px dotted black; 
  margin-left: -1em;     
  padding-left: 2em; 
}
ul li:last-child ul {
  border-left: 1px solid white;
  margin-left: -17px;
}
Run Code Online (Sandbox Code Playgroud)

jas*_*sie 7

Dylancwood为嵌套结构提供了 CSS,如问题示例中所示(ulinul而不是答案中的 in )divdiv

\n

请参阅https://gist.github.com/dylancwood/7368914

\n

保持嵌套在语义上是正确的(并且在没有任何 CSS 的情况下看起来仍然正确)!(Manuel Matuzovi\xc4\x87 写了一篇关于ol 与 ul .vs div的非常好的文章。)

\n

无论如何,Dylancwood使用轻量border-left结合:before来绘制垂直和水平连接线。一个工作小提琴与他的要点有关。

\n


xot*_*nic 6

我自己做了实现。还有更多附加元素。

https://github.com/xotonic/flex-tree