html - colspan + 固定宽度内容影响td宽度

标签 html css html-table

我对 colspan 的理解或在 HTML 表格中实现 colspan 的浏览器有问题。请参阅以下示例:

td {
  border: 1px solid red;
}
<table>
  <tr>
    <td id="upper-td" colspan="2">
      <div style="width:500px">colspan</div>
    </td>
  </tr>
  <tr>
    <td id="broken-td">col 1</td>
    <td id="fullwidth-td" style="width:100%">col 2</td>
  </tr>
</table>

根据我的理解,由于 colspan=2#upper-td 不应影响下部 td 的宽度。这就是 Firefox 中发生的情况。

在 Chrome、IE11 和 Edge 中,#broken-td 的 offsetWidth 为 250px(确切地说,宽度为 248px,左右内边距为 1px)。这恰好是 #upper-td 内容宽度的一半(我使用多个宽度进行了测试,并且保持了这个比例)。

有人可以解释一下这种行为吗?

解决方法是设置 #broken-td{width:0} (适用于 IE,不适用于 Chrome)或 #broken-td{width:1%} (适用于 Chrome,不适用于 IE)。但用户代理嗅探解决方法是我最不想引入到我们的代码库中的东西。

最佳答案

我认为 Firefox 可以正确渲染它,看起来像是 Chrome 和 IE 中的一个错误,但对此不确定。作为解决方法,使用 <col> 元素似乎在不同的浏览器上运行良好。

<强> jsFiddle

td {
  border: 1px solid red;
}
table {
  width: 100%;
}
.col-1 {
  width: 1px;
}
<table>
  <col class="col-1">
  <col class="col-2">
  <tr>
    <td id="upper-td" colspan="2">
      <div style="width:500px">colspan</div>
    </td>
  </tr>
  <tr>
    <td id="broken-td">col 1</td>
    <td id="fullwidth-td">col 2</td>
  </tr>
</table>

关于html - colspan + 固定宽度内容影响td宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37989513/

相关文章:

javascript - 单击同一类型时关闭一种类型的下拉列表

javascript - 使用 getElementById 创建表仅显示最后一个实例

html - 设置表格 td 高度和溢出滚动

jquery - 如何在 Firefox 中获取屏幕高度

jquery - 先创建网站还是在 Cakephp 上设置 Jquery?

javascript - jQuery - 元素检测性能

html - 在特定控件上应用 css 类

html - 文本不换行

javascript - 查询 : animate image on scroll

jQuery 循环遍历表格单元格