<head> </ head>中标记的顺序
在<head></head>
, <link>
或<script>
或<meta>
标签的顺序是什么关系?
(愚蠢的问题,但其中一个我从来没有给任何想法,直到现在。)
接受的答案是错误的,这取决于文档的编码。 如果在HTTP头中没有发送编码,浏览器必须从文档本身确定编码。
如果文档使用<meta http-equiv="Content-Type" …
声明来声明其编码,那么在此语句之前出现的任何ASCII值的字符(字符代码<128) 必须是ASCII值,按照HTML 4规范 。 因此,这个meta
声明出现在任何其他可能包含非ASCII字符的元素之前是很重要的。
优化
据雅虎人士透露, 您应该将CSS放在顶部 , 脚本放在底部,因为脚本会阻止并行下载。 但是,这主要是一个优化的问题,并不是实际工作的页面的关键。 Joeri Sebrechts指出, Cuzillion是一个很好的方法来testing这个,看看自己的速度提高。
多个样式表
如果您链接多个样式表,则链接的顺序可能会影响页面的样式,具体取决于select器的特殊性 。 换句话说,如果您有两种样式表以两种不同的方式定义相同的select器,则后者将优先。 例如:
样式表1:
h1 { color: #f00; }
样式2:
h1 { color: #00f; }
在这个例子中, h1
元素将具有颜色#00f
因为它最后被定义为相同的特征:
多个脚本
如果您正在使用多个脚本,则如果其中一个脚本依赖于另一个脚本中的某个脚本,则它们的使用顺序可能很重要。 在这种情况下,如果脚本以错误的顺序链接,则某些脚本可能会引发错误或无法正常工作。 但是,这很大程度上取决于您正在使用的脚本。
build议尽可能使字符编码的元标记。 如果编码不包含在(或不同于)请求页面的响应头中,浏览器将不得不猜测编码是什么。 只有当它find这个元标记,它才知道它正在处理什么,它将不得不再次读取已经parsing的所有东西。
请参阅指示字符集的方法 。
一个重要的事情要注意:如果您使用Internet Explorer元X-UA兼容标签来切换IE的渲染模式,它需要是在头的第一件事:
<HEAD> <meta http-equiv =“X-UA-Compatible”content =“IE = 7”/> <title>页面标题</ title> ...等等 </ HEAD>
元无所谓,但链接(对于CSS)和脚本事宜。
脚本将阻止大多数浏览器渲染页面,直到加载脚本。 因此,如果可能的话,不要把它们放在头上,而放在身上。
CSS链接不会阻止页面呈现。
通常build议将<script>
标记尽量放在页面的下方(不是在头部,而是在正文中)。
除此之外,我不认为它有很大的区别,因为除非你已经完全加载了<head>
部分,否则不能parsing正文。 而且,您希望您的<link>
标签处于最佳状态,因为您希望在浏览器呈现您的页面时发生样式,而不是在此之后!
如果你在meta元素中声明字符集,你应该在任何其他元素之前执行它。
根本不是一个愚蠢的问题。
CSS之上的脚本标签原因已经提到。
CSS是按照您放置标签的顺序应用的 – 样式表越具体,则应该放置的顺序越低。
脚本也一样 – 在加载依赖关系之后,应该加载使用在其他文件中声明的函数的脚本。
把声明字符集的元标记作为头中的第一个元素。 浏览器只search标签。 如果元素之前有太多的东西,charset可能不会被应用。
如果使用BASE元素,请将其放在加载URI的元素之前(如果需要)。
只有其中一个链接文件(CSS / Javascript)依赖于另一个。 在这种情况下,所有的依赖项必须先加载。
比方说,你正在加载一个jQuery插件,那么你需要首先加载jQuery本身。 当你有一个扩展其他规则的规则的CSS文件时也是如此。
正如已经指出的,元描述内容字符集应该是第一个,否则在某种情况下实际上可能是一个安全漏洞。 (对不起,我不记得这种情况足以描述在这里,但它已被介绍给我在networking安全培训课程)
我最近有一个可拖动的jQuery UI元素的问题。 它在Firefox中运行正常,但不是Safari。 经过大量的试验和错误之后,修复就是把我的css链接移到头部的javascript链接上面。 很奇怪,但现在将成为我的标准做法。
为了validationXHTML的目的,是的。 否则,你可能会关心优化的答案。
不,除了CSS链接或包含之外,没有关系,因为CSSinheritance和它覆盖了已经devise的事实(对于我的英语感到抱歉,我认为我的句子不是很清楚: – /)。