我只有一个<UL>
,下面我们有一组<LI>
<ul>
<li>1<li>
<li>2<li>
<li>3</li>
<li>4<li>
</ul>
现在我想将它们显示为 TABLE,请帮助我使用 CSS,我们如何以下表格式显示以上 UL/LI 的 TABLE,在一个 TR(两个 TD)中设置 2 个 LI 等等....
好吧,这是一种可能的解决方案:
ul {
width: 450px; /* change it to whatever you like */
position: relative;
/* these should be probably already set up by `reset.css` */
list-style-type: none;
margin: 0;
padding: 0;
}
ul:before, ul:after {
text-align: center;
display: block;
border: 1px solid black;
border-bottom: 0;
width: 48%;
}
ul:before {
content: 'col1';
border-right: 0;
}
ul:after {
content: 'col2';
position: absolute;
top: 0;
left: 48%;
margin-left: 1px;
}
li {
text-align: right;
width: 48%;
float: left;
border: 1px solid black;
margin-bottom: -1px;
}
li:nth-child(even) {
margin-left: -1px;
}
它可以工作(JSFiddle;在 Chrome、Firefox 和 Opera 中测试;nth-child(even)
选择器在 IE8 中显然失败,所以你必须用类或其他方式模拟它;但除此之外它仍然是可靠的),但我承认我对此感到内疚。)
PS如果你想为“单元格”内容添加填充,不要忘记改变它们的宽度,就像这里:
li {
width: 47%;
padding-right: 1%;
}
这是一个非常晚的答案,但我认为这是一个常见的话题。这是我制作的代码笔。
显然,这只是一个起点。它还提供了一些示例,说明如何添加背景或边框等样式。例如,如果“单元格”包含一些任意内容,则必须调整尺寸。我将这种代码用于缩略图画廊,例如,您不必担心边框或 bgs 并且它是非常基本的代码(该示例适用于 2x3 表格,请参阅 codepen):
ul{
list-style:none;
}
ul li{
float:left;
padding:10px;
border-bottom:1px solid #000;
border-right:1px solid #000;
}
ul li:nth-child(3n){
background-color:#888;
}
ul li:nth-child(3n+1){
clear:both;
border-left:1px solid #000;
background-color:#ccc;
}
ul li:nth-child(-n+3){
border-top:1px solid #000;
}
希望能帮助到你。
您不能通过display: table
属性将单个列表(包含超过 2 个项目)转换为 2 列,因为您需要一些元素来充当表格行。如果没有一个元素充当表格行,则所有设置为的相邻元素都display: table-cell
将包含在无法以任何方式修改或设置样式的匿名表格行元素中。
您唯一的选择是更改标记(使用表格或列表列表)或对 CSS 使用不同的方法:在li
s 上使用floats/inline-block 或columns
在ul
.