在表格布局中确定单元格宽度时,Webkit浏览器不考虑填充:已修复

时间:2010-12-14 17:31:18

标签: html css html-table webkit

table-layout:fixed应用于表并在单元格上使用填充时,我得到的结果不同。通过将单元格宽度和填充添加在一起,IE和Firefox似乎可以正常工作。 Chrome和Safari仅使用单元格宽度。我看到问题有一个错误,但找不到任何解决方法。有谁知道如何绕过它?

WebKit Bugzilla:https://bugs.webkit.org/show_bug.cgi?id=13339

table {
width:200px;
border-collapse:collapse;
}
#table-1 {
table-layout:auto;
}
#table-2 {
table-layout:fixed;
}
td {
padding:5px 10px;
}
td.set-width {
width:15px;
}
.box {
width:15px;
height:15px;
background-color:red;
}

<h2>Table-Layout: Auto</h2>
<table border="1" cellspacing="0" cellpadding="0" id="table-1">
<tr>
<td>&nbsp;</td>
<td class="set-width"><div class="box"></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>unbroken</td>
</tr>
</table>
<h2>Table-Layout: Fixed</h2>
<table border="1" cellspacing="0" cellpadding="0" id="table-2">
<tr>
<td>&nbsp;</td>
<td class="set-width"><div class="box"></div></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>unbroken</td>
</tr>
</table>

4 个答案:

答案 0 :(得分:1)

我能想到3种方法。

最简单的方法是添加仅由Chrome和Safari解释的样式表块,以调整行为以考虑渲染问题。避免使用“@media screen and(-webkit-min-device-pixel-ratio:0)”,因为这会影响Opera和某些版本的FF。使用“body:first-of-type”:

body:first-of-type td {
padding:5px 10px;
}

您还可以使用单独的样式表:

<link rel="stylesheet" type="text/safari" href="webkit-styles.css" />
<link rel="stylesheet" type="text/chrome" href="webkit-styles.css" />

第三个选项是使用Javascript。在脚本标记内,您可以使用navigator.appName和navigator.appVersion来识别浏览器并动态修复问题。

答案 1 :(得分:1)

如果在涉及填充时如何计算宽度的差异,为什么不从td删除填充?

<table style="table-layout: fixed;">
 <tr>
  <td style="width: 100px;">
   <div style="padding: 10px;">
    lorem, ipsum.
   </div>
  </td>
 </tr>
</table>

答案 2 :(得分:1)

如果您使用<colgroup>代码并在<col>上的<td> INSTEAD OF上指定宽度,则可以解决此错误。

.secondCol {
  width: 15px;
}

<table border="1" cellspacing="0" cellpadding="0" id="table-2">
  <colgroup>
    <col class="firstCol">
    <col class="secondCol">
  </colgroup>
  <tr>
    <td>&nbsp;</td>
    <td><div class="box"></div></td>
  </tr>
</table>

答案 3 :(得分:0)

设置框的位置类型(绝对/相对等)以获得相同的结果,您需要从那里调整框。