squ*_*ket 31 html tablecell tablerow css-tables
我最近注意到,可以display: table-cell;
在元素上使用而不使用元素包围它display: table-row;
示例(在IE,Chrome,FF,Safari,Opera中工作):
<div style="display: table;">
<div style="display: table-cell;">
Text
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这被认为是不好的风格?表格单元是否应该由表格行包围,还是没有必要?
doi*_*tin 16
不,它不需要使用display: table-row
.阅读这里.
table-cell
只代表一个<td>
或<th>
:
指定元素表示表格单元格.
特别是关于table-cell
:
例如,设置为"display:table-cell"的图像将填充可用的单元格空间,其尺寸可能有助于表格大小调整算法,就像普通单元格一样.
Joh*_*ers 12
匿名表元素
CSS表格很乐意遵守表格布局的常规规则,这使得CSS表格布局具有极其强大的功能:浏览器匿名创建缺少的表格元素.CSS2.1规范声明:
除HTML之外的文档语言可能不包含CSS 2.1表模型中的所有元素.在这些情况下,必须假定"缺少"元素才能使表模型起作用.任何表元素都会自动生成必要的匿名表对象,包括至少三个对应于"table"/"inline-table"元素的嵌套对象,一个"table-row"元素和一个"table-cell"元素.
这意味着如果我们在
display: table-cell;
没有首先包含设置的块中的单元格的情况下使用,那么display: table-row;
该行将被暗示 - 浏览器将表现为就像声明的行实际存在一样.
所以不,display:table-cell
没有包含就没有问题display:table-row
.它产生的CSS非常有效,并且有一些非常有趣的用例.有关使用匿名表元素的更多信息,请参阅我引用的文章.
它生成有效CSS的事实并不意味着display:table-cell
没有display:table-row
或display:table-row
稳定的行为.即使在今天(2016年2月),令人厌恶的表元素的行为在浏览器中仍然不一致.请参阅display的不一致行为:table和display:table-cell以获取更多详细信息.