6

为什么所有<body>浏览器都在所有网页的元素上设置任意大小的边距?* 我对此并不感到惊讶,因为我多年来一直在制作网页,但我只是假设它是规范的一部分,就像里面的文字<strong>应该是粗体一样。但是,正如在HTML5 HTML 4.01 HTML 4.0 HTML 3.2,甚至HTML 2.0RFC 定义中看到的那样,甚至从未提及默认样式!

我在 1995 年发布的 2.0 之前找不到 HTML 的任何定义,那么为什么所有浏览器都会在所有网页上插入非常特定的8px边距*,尤其是在每个网站在前几行中删除它的时代CSS(甚至HTML 4.01 规范的样式表也这样做)或规范化/重置样式表?当然,有人可能会争辩说,像上面列出的 HTML 3.2 规范这样的古老网站依赖于此,但如果没有边距,它们看起来确实不错(尝试使用浏览器检查器将其删除)。

*** “所有浏览器”是指Chrome、Firefox、IE、Opera 和 Safari 的所有版本,包括所有相关的过时版本、beta、alpha 和 nightlies,截至本问题。

4

3 回答 3

5

浏览器必须具有某种默认呈现作者样式表在首次引入 HTML 时不存在,并且今天仍然是可选的附加功能)。

如果 body/html 上没有边距/填充,则文本会碰到窗口边框和工具栏,很难阅读(这对于默认渲染来说是一个糟糕的选择)。

为什么所有浏览器都会在所有网页上插入非常具体的 8px 边距

“但它在 Netscape 中看起来不同”是一个常见的抱怨。浏览器相互复制默认渲染以补偿作者编写页面并且只考虑一个浏览器。

每个网站都会在 CSS 的前几行中删除它

不是每个网站都这样做。对于将包含样式表的网站来说,这是一种常见(但不是普遍)的做法,但并非所有网站都这样做。

于 2013-10-24T13:43:43.367 回答
3

您在http://www.w3.org/StyleSheets/TR/W3C-REC中提到的样式表删除了边距,但也对正文应用了填充,将文本从浏览器镶边移开以提高可读性..

浏览器必须至少有一些 HTML 元素的默认样式才能传达层次结构和结构。

更新:您可以在以下位置查看用户代理样式表:

于 2013-10-24T13:47:02.357 回答
1

补充一点其他答案,Web 浏览器在 90 年代的营销方式与现在大不相同,并且它们还包含不同的组件。Netscape 套件中包含的一个此类组件(请记住,此时,Netscape 是镇上唯一的狗,您必须购买它)是一个名为Netscape Composer的 HTML 编辑器。我可以想象当微软发布 IE 来竞争时,他们可能有一些类似的功能,因此使用他们自己的默认样式(虽然我不记得它是什么,我什至没有想过当时开发)。我最好的猜测是,这些 HTML 编辑器功能至少在一定程度上促成了不同 Web 浏览器的默认样式。

于 2013-10-24T15:48:25.213 回答