html - 仅使用 CSS 显示树列表的最佳方法(无图像或 JS,内部示例)

标签 html css

我想在 HTML 页面上显示如下内容: enter image description here

在仅使用 CSS 的限制下。 主要问题在于制作这些: |└ ├ “分支机构”。

上面的例子是我自己做的一个解决方案。每个分支具有相同的宽度,包括:

<ul>
    <li></li>
    <li></li>
</ul>

诀窍是转动<li>的边框相应地变黑。一张图片来展示这个(只是一个快速的模型) enter image description here

我遇到的一个问题是将边框变成白色以匹配背景而不是透明(显然 CSS 在列表上的透明边框方面存在一些问题)。

我的问题是:最简单的解决方案是什么?有更好的方法吗?

编辑:一些要求:

  • 分支的宽度必须固定,但高度必须随着表格单元格的高度相应增长。
  • 两个li每个元素必须占据行高的一半,这样 -永远在中间。

编辑 2:http://en.wikipedia.org/wiki/Template:Tree_list做了一点研究。 las,他们使用图像作为分支机构。

PS:按要求http://jsfiddle.net/q3zdB/2/

最佳答案

我能想到的最好的办法是一些(不幸的是令人遗憾的)嵌套和使用生成的内容(所以它确实需要一个非常新的浏览器,所以 IE < 8 看起来不会非常漂亮),但是,也就是说,给定 HTML:

ul {
  padding: 0;
  margin: 0;
  list-style-type: none;
  position: relative;
}
li {
  list-style-type: none;
  border-left: 2px solid #000;
  margin-left: 1em;
}
li div {
  padding-left: 1em;
  position: relative;
}
li div::before {
  content:'';
  position: absolute;
  top: 0;
  left: -2px;
  bottom: 50%;
  width: 0.75em;
  border: 2px solid #000;
  border-top: 0 none transparent;
  border-right: 0 none transparent;
}
ul > li:last-child {
  border-left: 2px solid transparent;
}
<ul>
  <li><div>Level 1</div></li>
  <li><div>Level 1</div>
    <ul>
      <li><div>Level 2</div></li>
      <li><div>Level 2</div>
        <ul>
          <li><div>Level 3</div></li>
          <li><div>Level 3</div></li>
        </ul>
      </li>
    </ul>
  </li>
  <li><div>Level 1</div></li>
</ul>

我们得到这个:

Link to the JS Fiddle demo.

JS Fiddle demo

关于html - 仅使用 CSS 显示树列表的最佳方法(无图像或 JS,内部示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14423671/

相关文章:

javascript - 删除 HTML5 通知权限

seo - 什么 HTML5 标签应该用于 "Call to Action"Div?

html - css 当对同一个 css 属性使用多个类时

php - 自动提示显示空白 li

javascript - 当 Div 内的宽度增加时,如何防止 Button 缩小高度?

javascript - 用于查找 Web 浏览器和浏览器错误之间呈现行为差异的资源

javascript - 使用 JavaScript 创建动态 HTML 表单

CSS Div 在 IE 上不合适

html - 使用自定义背景颜色删除 Font Awesome 图标的边框

html - 包裹在容器中的流体 float 元件