以前显示任何文本时,字体大小属性会被破坏

时间:2014-07-02 06:38:50

标签: php html css doctype

这可能是一个愚蠢的问题。我在外部样式表上定义了所有样式,并将它们链接到我的文档,如下所示:

<link rel="stylesheet" type="text/css" href="tema.css" />

我的CSS是这样的:

body {
    background: #333;
    font-size: 10pt;
    color: white;
    font-family: sans;
}
#Table {
    /* font-size: inherit; */
}

我的<!DOCTYPE>是这样的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

顺便说一句标准。但是,如果我{/ 1}} 我的文档上的print声明之前的任何,我的CSS样式会中断吗?

如果我这样做:

<!DOCTYPE>

我的表的foo <!DOCTYPE … > <html> <table id="Table">…</table> </html> 属性被破坏,其中的所有文字都使用我的浏览器的默认font-size(12磅)进行渲染,但文本这是里面表格(我还没有找到另一个问题,这是我迄今为止唯一注意到的问题),并且只有我没有设置表格的具体font-size,直接font-size10pt

Table example 1

但是,如果我这样做(将inherit 放在回显之前):

<!DOCTYPE>

或者这个(为表格设置一个特定的<!DOCTYPE … > foo <html> <table id="Table">…</table> </html> ,即使在回显文本之后font-size >):

<!DOCTYPE>

一切似乎都运转良好:

Table example 2

问题是:为什么?这件事发生在其他人身上吗?这是一个错误吗?我应该报告吗?

这里是关于pastebin的test document所以你可以玩它。

注意

这种情况发生在谷歌Chrome,IE,Firefox,Opera,Midori甚至我的Android内置浏览器上。

我只是为了调试目的而回复该文字,所以它不是那么必要,我可以将body { … } #Table { font-size: inherit; } 留在顶部,但是把它放在那里感觉不对,它和只是因为我无法找到与<!DOCTYPE>声明的位置相关的此行为的任何信息。

3 个答案:

答案 0 :(得分:3)

这不是一个错误。

DOCTYPE之前有任何东西在浏览器中将渲染引擎切换到怪癖模式并使它们像IE5一样(好吧,等等)。

因此,最好的解决方案始终是先输出DOCTYPE

在您的情况下问题出在

  

除了font-family之外,不要将字体属性包含在表中。

请参阅:

https://developer.mozilla.org/en-US/docs/Mozilla_Quirks_Mode_Behavior

https://developer.mozilla.org/en-US/docs/Quirks_Mode_and_Standards_Mode

答案 1 :(得分:2)

首先,你不能在<!DOCTYPE>之前输出任何内容。 Doctype应该是浏览器在文档中看到的绝对第一,因为它使用doctype来弄清楚如何呈现页面。

网络建立在标准之上,当HTML从根本上被打破时,浏览器会切换到Quirks模式。

答案 2 :(得分:1)

在DOCTYPE声明之前,您不应该有任何用户可读或浏览器解释的文本,因为它指定了您要在文档中使用的内容类型。解决方案就是避免这样做。 DOCTYPE声明之前允许的唯一文本是仅由服务器端读取的文本 - 例如PHP代码,JSP snipplet等等。