具有 100% 宽度分隔线的 CSS Accordion /树菜单

标签 css tree accordion

我想用 HTML 创建一个 CSS/JS Accordion 菜单,如下所示:

<ul>
    <li><a href="#">First Link</a>
        <ul>
            <li><a href="#">Child One</a></li>
            <li><a href="#">Child Two</a></li>
        </ul>
    </li>
    <li><a href="#">Second Link</a></li>
    <li><a href="#">Third Link</a></li>
</ul>

导航结构可以达到 N 级深度,每个子菜单将从其父菜单缩进。我希望在所有导航元素(包括第 n 级子元素)之间有一个跨越 100% 宽度的边框。像这样:

alt text http://files.getdropbox.com/u/64548/nested-nav.png

如果不使用 JavaScript,我一辈子都想不出一种简单的方法来做到这一点,但感觉应该是可行的。 (我将使用 JS 来展开/折叠导航树)。

最佳答案

您需要在 <a> 上添加边框和内边距这也必须设置为 display:block .这给了额外的好处,因为它使整个 <li>区域可点击。

ul 中不需要额外的标记。只需在您的 css 中定义子列表的最大数量。

Example here

a {text-decoration:none;}
ul {width:240px;padding:0;list-style:none;border-top:1px solid #000;}
ul ul, ul ul ul {border-top:0;}
li a {border-bottom:1px solid #000;display:block;padding-left:0px;}
li li a {padding-left:40px;}
li li li a {padding-left:80px;}


<ul>
    <li><a href="#">First Link</a>
        <ul>
            <li><a href="#">Child One</a></li>
            <li><a href="#">Child Two</a>
                <ul>
              <li><a href="#">Child Two One</a></li>
              <li><a href="#">Child Two Two</a></li>
              </ul>
          </li>
        </ul>
    </li>
    <li><a href="#">Second Link</a></li>
    <li><a href="#">Third Link</a></li>
</ul>

关于具有 100% 宽度分隔线的 CSS Accordion /树菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1120664/

相关文章:

html - 减慢css3中的动画

css - 什么 CSS 设置解释了按钮和 div 在子垂直定位中的差异?

css - 在标题中插入换行符而不是移动它

jquery - IE 中 jquery Accordion 的无效参数错误

javascript - 在不实际使用表格的情况下获得类似表格的对齐方式

C - 二叉树 : error while appending a new child to the tree

php - 从 php 中的数组制作 "tree array"

javascript - EXTJS:如何根据 Response 中的 a 属性在 TreeGrid 中绘制不同颜色的行?

jsf - 单个表单中的 primefaces Accordion 面板 - 仅在打开的选项卡上验证

jquery - Bootstrap 嵌套 Accordion ,内部 div 不是面板