我有一点问题.我正在使用FireFox 3.6并具有以下DOM结构:
<div class="view-row">
<div class="view-type">Type</div>
<div class="view-name">Name</div>
</div>
Run Code Online (Sandbox Code Playgroud)
以下CSS:
.view-row {
width:100%;
display:table-row;
}
.view-name {
display: table-cell;
float:right;
}
.view-type {
display: table-cell;
}
Run Code Online (Sandbox Code Playgroud)
如果我取下display:table-row它会显示正确,view-row显示宽度为100%.如果我把它放回去,它会缩小.我把它放在JS Bin上:
这是怎么回事?
KP.*_*KP. 87
如果你正在使用display:table-row等,那么你需要适当的标记,其中包括一个包含表.没有它你的原始问题基本上提供了相同的坏标记:
<tr style="width:100%">
<td>Type</td>
<td style="float:right">Name</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
上面的表格在哪里?你不能只是有一排冒出(TR必须包含在任一table,thead,tbody,等)
相反,添加一个外部元素display:table,将100%宽度放在包含元素上.两个内部单元格将自动转到50/50并在第二个单元格上对齐文本.忘记floats表元素.这会引起如此多的头痛.
标记:
<div class="view-table">
<div class="view-row">
<div class="view-type">Type</div>
<div class="view-name">Name</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.view-table
{
display:table;
width:100%;
}
.view-row,
{
display:table-row;
}
.view-row > div
{
display: table-cell;
}
.view-name
{
text-align:right;
}
Run Code Online (Sandbox Code Playgroud)
Ami*_*ana 54
测试答案:
在.view-row css中,更改:
display:table-row;
Run Code Online (Sandbox Code Playgroud)
至:
display:table
Run Code Online (Sandbox Code Playgroud)
并摆脱"浮动".一切都会按预期工作.
正如评论中所建议的那样,不需要包装表.CSS允许省略隐式的树结构(在本例中为行)的级别.您的代码不起作用的原因是"宽度"只能在表级别解释,而不能在表级级别解释.当你有一个"表"然后直接在下面的"表格单元格"时,它们被隐含地解释为坐在一排.
工作范例:
<div class="view">
<div>Type</div>
<div>Name</div>
</div>
Run Code Online (Sandbox Code Playgroud)
用css:
.view {
width:100%;
display:table;
}
.view > div {
width:50%;
display: table-cell;
}
Run Code Online (Sandbox Code Playgroud)
小智 16
请注意,根据CSS3规范,您不必将布局包装在表格样式元素中.如果不存在,浏览器将推断包含元素的存在.