使用CSS构建表

时间:2013-06-12 18:45:09

标签: css css3 css-tables

我正在尝试用CSS开发特别简单的布局,但没有成功。 我想实现这样的目标:

BookImage        BookImage        BookImage
BookTitle        BookTitle        BookTitle

知道我有这个:

<div class="center">
<h2>Science</h2> 
  <div class="ThreeColumns">
    <div> <img src="ex"><p>Title</p> </div>
    <div> <img src="ex"><p>Title</p> </div>
    <div> <img src="ex"><p>Title</p> </div>
  </div>
.threeColumns{
    -moz-column-count: 3; /* Firefox */
    -webkit-column-count: 3; /* Safari and Chrome */
    column-count: 3;
    }

问题在于我没有得到我想要的东西。就好像每个标记(<img><p></p>)都被视为“列”。我想要一种方法来对<img><p>进行分组,将它们放在一起并获得我的布局。我以为<div>可以做到,但我错了。

5 个答案:

答案 0 :(得分:6)

当您要查找类似的结果时,只需将<table><tr><td>一起使用即可。您可以使用CSS设置背景,边框等样式。

答案 1 :(得分:4)

如果您真正构建了一个表,为什么不使用所有<table>标记。一般的经验法则是有人在此网站上告诉过我,当数据实际上是 表格 时,可以使用表格,但不能用于布局。如果您的数据是 表格式 ,它似乎是重新发明轮子的原因。

答案 2 :(得分:1)

您正在寻找的关键是break-inside属性。

.ThreeColumns div {
    -webkit-column-break-inside: avoid; /* this is the old name */
    break-inside: avoid; /* this is the new name */
}

但是,Firefox根本不支持此属性,即使它确实支持大多数其他列属性。

答案 3 :(得分:0)

您的容器div上还需要display:table,孩子div上需要display:table-cell

答案 4 :(得分:0)

要避免div从列喷射到另一列,请将它们设置为内联框/内容。

<div class="center">
<h2>Science</h2> 
  <div class="ThreeColumns">
    <div> <img src="ex"><p>Title</p> </div>
    <div> <img src="ex"><p>Title</p> </div>
    <div> <img src="ex"><p>Title</p> </div>
  </div>
.threeColumns{
    -moz-column-count: 3; /* Firefox */
    -webkit-column-count: 3; /* Safari and Chrome */
    column-count: 3;
    }
.threeColumns > div {
    display:inline-block;
    }