【发布时间】:2021-12-21 22:58:46
【问题描述】:
在以下 HTML 顶部添加 <!DOCTYPE html> 时,表格的高度会发生变化,因为 p 的边距包含在 td 元素中:
<!DOCTYPE html>
<html>
<body>
<table>
<tbody>
<tr>
<td style="border: solid 1px black;">
<p>test</p>
</td>
</tr>
</tbody>
</table>
</body>
</html>
例如在 Chrome 中:
我知道省略 DOCTYPE 会使浏览器呈现怪异模式,并且该文档将不是有效的 HTML,但我仍在寻找一种样式技巧以使它们呈现相同(至少在 Chrome 中) -理想情况下更改与表格相关的样式而不是 p 的样式。
在我的辩护中:我将在不同的上下文中渲染一个相同的 HTML,有和没有<!DOCTYPE html>,后者是我无法控制的第三方组件。
【问题讨论】:
-
试试这个
* { box-sizing: border-box; }- reference -
如果缺少文档类型,则 HTML5 无效,因此浏览器可以使用它选择的任何古怪的呈现模式。请参阅html.spec.whatwg.org/multipage/syntax.html#the-doctype:“出于遗留原因,需要 DOCTYPE。 当省略时,浏览器倾向于使用与某些规范不兼容的不同呈现模式。”
-
@user2864740 你是对的。但是碰巧我在第三方组件中渲染了这个 HTML,它创建了
iframe而没有在里面添加<!DOCTYPE html>。 -
@AhmedTagAmer 刚刚尝试过,但似乎不起作用。
-
您是否联系过创建该组件的第 3 方?如果他们听取错误请求,则无需头疼。他们可以生成有效的 HTML。
标签: html doctype quirks-mode