用CSS中的分层列表制作表格

用CSS中的分层列表制作表格,css,styling,Css,Styling,这应该很容易,或许不可能:) 我有这种HTML输出 <ul> <li>one</li> <li>two <ul> <li>a</li> <li>b</li> </ul> </li> <li>three</li> </ul> 如何使用纯CSS实

这应该很容易,或许不可能:)

我有这种HTML输出

<ul>
   <li>one</li>
   <li>two
      <ul>
          <li>a</li>
          <li>b</li>
      </ul>
   </li>
   <li>three</li>
</ul>
如何使用纯CSS实现这一点?如果有必要,我可以在一定程度上修改HTML(但我宁愿不修改)。

你问的是“纯”CSS。纯CSS是为工作使用最好的语义标记,这意味着如果你真的有表格数据,这看起来可能是,那么你应该使用表格。

你是在问“纯”CSS。纯CSS是为工作使用最好的语义标记,这意味着如果你真的有表格数据(看起来可能是这样),那么你就应该使用表格。

你可以使用CSS标记“列表样式类型:无”

ulli{ 列表样式类型:无; 显示:内联; }

ulli ulli{ 列表样式类型:无; 显示:内联; }

您可以使用css标签“列表样式类型:无”即

ulli{ 列表样式类型:无; 显示:内联; }

ulli ulli{ 列表样式类型:无; 显示:内联;
}

您可以通过一些浮动和绝对定位来实现这一点

ul li { list-style-type: none; display: inline; float: left; margin: 0 4px;}
ul.first {position: absolute; top: 0; left: 0;}
ul li ul li ul{ list-style-type: none; display: inline; float: left;position: absolute; top: 30px; left: 0; margin-top: 30px;}
ul.second {position: absolute; top: 30; left: 50;}

  • 一个
  • 两个
    • a
    • b

您可以通过一些浮动和绝对定位来实现这一点

ul li { list-style-type: none; display: inline; float: left; margin: 0 4px;}
ul.first {position: absolute; top: 0; left: 0;}
ul li ul li ul{ list-style-type: none; display: inline; float: left;position: absolute; top: 30px; left: 0; margin-top: 30px;}
ul.second {position: absolute; top: 30; left: 50;}

  • 一个
  • 两个
    • a
    • b

为了进一步理解Zac的答案,您可以在不修改HTML的情况下进行CSS寻址。那么它看起来是这样的:

<style>
ul li { list-style-type: none; display: inline; float: left; margin: 0 4px;}
ul  {position: absolute; top: 0; left: 0;}
ul li ul li ul{ list-style-type: none; display: inline; float: left;position: absolute; top: 20px; left: 0; margin-top: 30px;}
ul li ul {position: absolute; top: 20; left: 0;}
</style>

<ul>
   <li>one</li>
   <li>two
      <ul>
          <li>a</li>
          <li>b</li>
      </ul>
   </li>
   <li>three</li>
</ul>

ul li{列表样式类型:无;显示:内联;浮点:左;边距:0 4px;}
ul{位置:绝对;顶部:0;左侧:0;}
ul li ul{列表样式类型:无;显示:内联;浮点:左;位置:绝对;顶部:20px;左侧:0;页边距顶部:30px;}
ul li ul{位置:绝对;顶部:20;左侧:0;}
  • 一个
  • 两个
    • a
    • b

为了进一步理解Zac的答案,您可以在不修改HTML的情况下进行CSS寻址。那么它看起来是这样的:

<style>
ul li { list-style-type: none; display: inline; float: left; margin: 0 4px;}
ul  {position: absolute; top: 0; left: 0;}
ul li ul li ul{ list-style-type: none; display: inline; float: left;position: absolute; top: 20px; left: 0; margin-top: 30px;}
ul li ul {position: absolute; top: 20; left: 0;}
</style>

<ul>
   <li>one</li>
   <li>two
      <ul>
          <li>a</li>
          <li>b</li>
      </ul>
   </li>
   <li>three</li>
</ul>

ul li{列表样式类型:无;显示:内联;浮点:左;边距:0 4px;}
ul{位置:绝对;顶部:0;左侧:0;}
ul li ul{列表样式类型:无;显示:内联;浮点:左;位置:绝对;顶部:20px;左侧:0;页边距顶部:30px;}
ul li ul{位置:绝对;顶部:20;左侧:0;}
  • 一个
  • 两个
    • a
    • b


我也在想同样的事情,我想把它添加到问题中。问题是,然后我必须进入那里,并与产生HTML的模板,但是的,我想这就是为什么我得到报酬。谢谢。由于在页面布局中被过度使用了这么多年(当时没有好的替代方案),表的包装很糟糕。然而,对于表格数据使用HTML表并没有什么错。事实上,这通常是最干净、最简单、最跨浏览器友好的方式。如果您无法控制HTML怎么办?然后你会使用下面扎克的答案。我只是在想同样的事情,我打算把它添加到问题中。问题是,然后我必须进入那里,并与产生HTML的模板,但是的,我想这就是为什么我得到报酬。谢谢。由于在页面布局中被过度使用了这么多年(当时没有好的替代方案),表的包装很糟糕。然而,对于表格数据使用HTML表并没有什么错。事实上,这通常是最干净、最简单、最跨浏览器友好的方式。如果您无法控制HTML怎么办?然后你会使用下面Zac的答案。这是第一步,但它是不完整的,因为它不会像他想要的那样排列。哎呀,忘了你还必须添加一个“display:inline;”。好吧,这很酷,但问题是——这在CSS中可能无法解决——将第二行作为第二行,并且不中断第一行。对于您当前的HTML,我敢肯定,如果不使用CSS2子选择器并定位每个元素,您将无法完成它。这是第一步,但是它是不完整的,因为它不会像他想要的那样排列。哎呀,你忘了你也必须添加一个“display:inline;”。好吧,这很酷,但问题是——而且在CSS中可能无法解决——将第二行作为第二行,而不是中断第一行。使用当前的HTML,我很确定,如果不使用CSS2子选择器并定位每个元素,您将无法完成它。您确定要将b显示在三个元素下面吗?如果三个列表项也有一个子列表,那该怎么办呢?实际上,不,我希望a保持齐平,但我只是在询问后才意识到。问题似乎是这样的:我认为我无法阻止HTML分层(换句话说,a和b始终是这两个的子对象)。您确定要b显示在这三个下面吗?如果三个列表项也有一个子列表,那该怎么办呢?实际上,不,我希望a保持齐平,但我只是在询问后才意识到。问题似乎是这样的:我不认为我能阻止HTML的层次化(换句话说,a和b总是这两个的孩子)。真的吗?我得马上试试这个。如果它有效,你将赢得最佳答案和我永恒的感激之情,直到项目被改变,而这个答案甚至没有被使用:)真的吗?我得马上试试这个。如果成功,你将赢得最佳答案和我永恒的感激之情,直到项目发生变化,而这个答案甚至没有被使用:)