html - 表格内div的自动1px宽度

标签 html css google-chrome safari

这发生在 Chrome (43.0.2357.124) 和 Safari (5.1.7) 中,但不会发生在 Firefox 或 Internet Explorer 中。

出于某种原因,<div>以下代码中的元素自动宽度为 1px。

table, tbody, tr, td, div {
    padding: 0;
    margin: 0;
    border: 0;
}
table, tbody, tr, td {
    border-spacing: 0;
    border-collapse: collapse;
}
<table><tbody><tr><td><div></div></td></tr></tbody></table>

应用 display: inline-block; 时也会发生同样的情况和 width: 100%;<div>模拟 display:block额外的好处是<td>高度为 18px。

table, tbody, tr, td, div {
    padding: 0;
    margin: 0;
    border: 0;
}
table, tbody, tr, td {
    border-spacing: 0;
    border-collapse: collapse;
}
div {
    display: inline-block;
    width: 100%;
}
<table><tbody><tr><td><div></div></td></tr></tbody></table>

我知道申请 width: 0;<div>解决了这个问题,所以我不是在寻找一种方法来删除自动宽度。我只是好奇为什么会这样。这是浏览器错误还是由于 block 元素的某些自动样式而发生?

<div> 时也会发生类似的事情。不存在于 DOM 中。当 <td>为空,所有父元素的宽度为 1px,而 <td>宽度为 0。

table, tbody, tr, td {
    padding: 0;
    margin: 0;
    border: 0;
    border-spacing: 0;
    border-collapse: collapse;
}
<table><tbody><tr><td></td></tr></tbody></table>

问题似乎不是来自任何常见问题:填充、边距或边框,所以我不明白为什么 div 的宽度为 1px。

最佳答案

看起来 div 的大小是根据其父级的大小调整的 - td 在这种情况下(td 宽度为 1px,您可以删除 div 以查看),这是 div 的默认行为。
将它放在 td 中有点像打开潘多拉盒子 - div 根据其父元素获取其宽度,但 td 大小取决于其内容。
不同的浏览器似乎以不同的方式实现它,1px 宽度代表 webkit 确定空表格单元格大小的方法。

关于html - 表格内div的自动1px宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30822405/

相关文章:

html - 导航栏被以下文本覆盖

javascript - 如何将div的位置固定到包含背景图片的div的右下角

javascript - AngularJS Select元素设置选中索引

javascript - 何时在 HTML 表单中应用新样式

Javascript:通过 ID 更新元素?

javascript - 设置具有只读属性的输入字段的默认值

javascript - 无法通过 Javascript 更改元素位置

查找应用的 css 的 html 编辑器

css - Chrome 40 是否打破了 justify-content CSS 覆盖?

windows - 通过中断的连接从互联网下载文件