考虑到下面的HTML和CSS,我在浏览器中完全看不到任何东西(最新的Chrome和IE版本).一切都会崩溃到0x0像素.为什么?

<!DOCTYPE html>
<html>
<head>
    <style type="text/css">
        section { display: table; height: 100%; background-color: grey; }

        #colLeft { display: table-column; height: 100%; background-color: green; }
        #colRight { display: table-column; height: 100%; background-color: red; }

        #row1 { display: table-row; height: 100%; }
        #row2 { display: table-row; height: 100%; }
        #row3 { display: table-row; height: 100%; }

        #cell1 { display: table-cell; height: 100%; }
        #cell2 { display: table-cell; height: 100%; }
        #cell3 { display: table-cell; height: 100%; }
    </style>
</head>
<body>
    <section>
        <div id="colLeft">
            <div id="row1">
                <div id="cell1">
                    AAA
                </div>
            </div>
            <div id="row2">
                <div id="cell2">
                    BBB
                </div>
            </div>
        </div>
        <div id="colRight">
            <div id="row3">
                <div id="cell3">
                    CCC
                </div>
            </div>
        </div>
    </section>
</body>
</html>

推荐答案

CSS表格模型基于HTML表格模型 http://www.w3.org/TR/CSS21/tables.html

表格分为多行,每行包含一个或多个单元格.单元格是行的子元素,而不是列的子元素.

"DISPLAY:TABLE-COLUMN"不提供制作栏目布局的机制(例如,具有多个栏目的报纸页面,其中内容可以从一个栏目流向下一个栏目).

相反,"table-column"只设置应用于表行中相应单元格的属性.例如.可以描述为"每行第一个单元格的背景色为绿色".

表本身的 struct 始终与HTML中的 struct 相同.

在HTML中(注意到"td"在"tr"内,而不是在"ol"内):

<table ..>
  <col .. />
  <col .. />
  <tr ..>
    <td ..></td>
    <td ..></td>
  </tr>
  <tr ..>
    <td ..></td>
    <td ..></td>
  </tr>
</table>

使用CSS表属性的相应HTML(请注意,"column"div不包含任何内容——标准不允许直接在列中包含内容):

.mytable {
  display: table;
}
.myrow {
  display: table-row;
}
.mycell {
  display: table-cell;
}
.column1 {
  display: table-column;
  background-color: green;
}
.column2 {
  display: table-column;
}
<div class="mytable">
  <div class="column1"></div>
  <div class="column2"></div>
  <div class="myrow">
    <div class="mycell">contents of first cell in row 1</div>
    <div class="mycell">contents of second cell in row 1</div>
  </div>
  <div class="myrow">
    <div class="mycell">contents of first cell in row 2</div>
    <div class="mycell">contents of second cell in row 2</div>
  </div>
</div>



OPTIONAL:通过将多个类分配给每个行和单元格,可以设置"行"和"列"的样式,如下所示.此方法在指定要设置样式的各种单元格集合或单个单元格方面提供了最大的灵活性:

//Useful css declarations, depending on what you want to affect, include:

/* all cells (that have "class=mycell") */
.mycell {
}

/* class row1, wherever it is used */
.row1 {
}

/* all the cells of row1 (if you've put "class=mycell" on each cell) */
.row1 .mycell {
}

/* cell1 of row1 */
.row1 .cell1 {
}

/* cell1 of all rows */
.cell1 {
}

/* row1 inside class mytable (so can have different tables with different styles) */
.mytable .row1 {
}

/* all the cells of row1 of a mytable */
.mytable .row1 .mycell {
}

/* cell1 of row1 of a mytable */
.mytable .row1 .cell1 {
}

/* cell1 of all rows of a mytable */
.mytable .cell1 {
}
<div class="mytable">
  <div class="column1"></div>
  <div class="column2"></div>
  <div class="myrow row1">
    <div class="mycell cell1">contents of first cell in row 1</div>
    <div class="mycell cell2">contents of second cell in row 1</div>
  </div>
  <div class="myrow row2">
    <div class="mycell cell1">contents of first cell in row 2</div>
    <div class="mycell cell2">contents of second cell in row 2</div>
  </div>
</div>

在今天的灵活设计中,<div>用于多种用途,明智的做法是在每个div上设置some类,以帮助参考它.在这里,HTML中的<tr>变成了class myrow<td>变成了class mycell.正是这种约定使得上述CSS Select 器非常有用.

PERFORMANCE NOTE:将类名放在每个单元格上,并使用上面的多类 Select 器,比使用以*结尾的 Select 器(例如.row1 *甚至.row1 > *)的性能更好.原因是 Select 器是匹配last first的,所以当查找匹配元素时,.row1 *首先做*,这匹配all个元素,然后判断all the ancestors of each element,以查找是否有祖先有class row1.在速度较慢的设备上的复杂文档中,这可能会很慢..row1 > *更好,因为只判断直接父级.但是,通过.row1 .cell1立即消除大多数元素要好得多.(.row1 > .cell1是一个更严格的规范,但它是搜索的第一步才是最大的不同之处,所以通常不值得把它弄得乱七八糟,也不值得额外的思考过程来决定它是否永远是一个直接的子项,即添加子项 Select 器>.)

go 掉Rperformance的关键点是 Select 器中的last项应该是as specific as possible,而不应该是*.

Css相关问答推荐

为什么我的Angular material css文件不工作?

容器内的中心固定元件

如何将表格单元格的最后一个子级与单元格底部对齐?

需要Angular material 下拉面板有向下和向上箭头按钮

设置项目的最大宽度和最大高度

CSS 内联 Flex 和段落换行

如何取消 CSS 伪类中的属性设置?

使用CSS Grid是否可以跳过下一列?

使用 flexbox 使图像与内容高度相同

如何增加 PrimeFlex 网格的间隙?

没有 colored颜色 Select 器的 JavaFX colored颜色 Select 器

有条件地覆盖 CSS 中的 AntD Select 样式

在 vuetify 中跨 `default.vue` 和 `index.vue` 维护网格系统

Angular Material 中的样式垫 Select

使用@font-face 使用多种自定义字体?

将 Web 字体转换和渲染为 base64 - 保持原始外观

有没有办法让字段集的宽度与它们中的控件一样宽?

矩形图像的 CSS 圆形裁剪

Select 标签的占位符

CSS3可以转换字体大小吗?