为什么浏览器会在所有网页中设置预定义的边距?

时间:2013-10-24 13:35:44

标签: html css document-body

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

我找不到2.0之前的HTML定义,这是1995年全世界发布的,所以为什么所有*浏览器都会在所有网页上插入非常具体的8px页边距 ,特别是在这些日子里,每个网站都在CSS的前几行中删除它(即使HTML 4.01 spec's stylesheet执行此操作)或者标准化/重置样式表? 当然,有人可能会说,像上面列出的HTML 3.2规范这样的古代网站依赖于此,但如果没有边距,它们看起来并不坏(尝试用浏览器检查器将其删除)。

“所有浏览器”

* ,我的意思是所有版本的Chrome,Firefox,IE,Opera和Safari,包括所有相关的过时版本,beta,alphas,和夜莺一样,这个问题。

3 个答案:

答案 0 :(得分:5)

浏览器必须具有某种类型的默认呈现(当HTML首次引入时,作者样式表不存在,并且今天仍然是可选的额外内容)。

如果body / html上没有margin / padding,那么文本会在窗口边框和工具栏上运行,因为它很难读取(这对于默认渲染来说是一个糟糕的选择)。

  

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

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

  

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

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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:1)

为了向其他答案添加一些内容,Web浏览器在90年代的销售方式与现在大不相同,而且它们还包含不同的组件。 Netscape套件中包含的一个这样的组件(记住,此时,Netscape是城里唯一的狗,你必须购买它)是一个名为Netscape Composer的HTML编辑器。我想象当微软发布IE竞争时,他们可能有一些类似的功能,因此使用他们自己的默认样式(虽然我不记得它是什么,我甚至没有想到当时的发展)。我最好的猜测是,这些HTML编辑器功能至少在某种程度上对不同Web浏览器的默认样式有所贡献。