如果我将css文件放在<head>或<body>中,有什么区别?

通常情况下,将css文件放在<head></head> ,如果将它放在<body></body> ,会有什么不同?

只是添加了什么jdelStrother已经提到关于W3的规格和ARTstudio关于浏览器渲染。

build议这样做,因为在<body>开始之前声明CSS时,实际上已经加载了样式。 所以用户很快就会看到屏幕上出现的东西(例如背景颜色)。 如果没有,用户会在CSS到达用户之前看到空白屏幕一段时间。

而且,如果将样式放在<body>某个位置,则浏览器必须在声明的样式已parsing时重新呈现页面(装载时为新的和旧的)。

根据w3规范, <style>标签不允许在<body>内。 (当然,如果需要,您可以通过<div style="color:red">应用内联样式,但通常认为样式和内容分离不良)

把CSS放在正文中意味着稍后加载。 这是一种让浏览器更快速地绘制界面的技术(即,它消除了阻塞步骤)。 这对SmartPhones的用户体验很重要。

我尽我所能把一个小的CSS放在<head> ,其余的放在底部。 例如,如果一个页面使用JQuery UI CSS,我总是将它移动到<body>的底部,就在链接到JQuery javascript之前。 至less,所有非Jquery项目已经可以绘制了。

头是为(引用W3C)devise的:

“关于当前文档的信息,例如其标题,可能对search引擎有用的关键字以及不被视为文档内容的其他数据”

查看HTML文档的全局结构 。 由于CSS不是文档内容,它应该是头脑中的。

另外,每个其他的Web开发人员都希望在那里看到它,所以不要把它放在实体中,即使它可以工作,也不会混淆。

你应该把唯一的CSS放在内联CSS ,虽然我通常避免内联样式。

标准( HTML 4.01:样式元素 )明确指出样式标签只允许在头标签内。 如果您将样式标签放在身体标签中,浏览器将尝试尽可能地使用它,如果可能的话。

如果您指定严格的文档types,浏览器可能会忽略正文中的样式标记。 我不知道目前的浏览器是否可以做到这一点,但我不会指望所有将来的版本都放在放置样式元素的地方。

尽pipebody标签中不允许使用style标签,但只要引用了外部样式表,所有的浏览器都应该body正确渲染和使用CSS。

来源: https : //html.spec.whatwg.org/multipage/semantics.html#the-link-element

除了早期的答案,尽pipe在元素中放置一个样式代码块可能在现代浏览器中工作(尽pipe这样做仍然不能正确),但总是有危险,特别是对于旧浏览器,浏览器会将代码呈现为文本除非风格部分包含在CDATA部分中。

当然,除了内联样式之外,将其放入元素中的另一件事是,因为它不符合W3C HTML / XHTML规范,所以W3C HTML / XHTML规范中的任何页面都将在W3Cvalidation器上失败。 如果所有的代码都是有效的,那么查找意外的显示问题总是更容易,这样就更容易发现错误。 一个无效的HTML元素会对代码中出现的任何和所有元素的渲染产生不利影响,因此,您可以在不应该出现的地方获得意想不到的效果,因为当浏览器发现无效元素时,使得最好的猜测是它应该如何显示它,而不同的浏览器可以在它们的呈现方式上作出不同的决定。

无论您使用过渡型还是严格的文档types,根据(X)HTML规范,它仍然是无效的。

通过将样式放入正文中,您实际上将打败使用CSS的目的。 重点是将内容与演示(和function)分开。 这样,对样式的任何更改都可以在样式表中完成,而不是在内容中完成。 一旦使用内联样式方法,每个具有内联样式的页面都需要逐个更改。 单调乏味,而且风险很大,因为你可能会错过一三页,甚至十页。

使用样式表,你只需要改变样式表; 这些更改会自动传播到链接到样式表的每个HTML页面。

新生的观点也是另一个很重要的原因; 如果你通过内嵌CSS来搞乱HTML,渲染就成了一个问题。 HTML不会向你的代码抛出exception。 相反,它会熄灭,并以最好的方式呈现,并继续前进。

通过使用样式表遵守networking标准使得更好的网站。 而当你需要帮助的时候,因为你网页上的东西并不是你想要的东西,把你的CSS放在头上而不是身体上,使得你自己和任何你需要帮助的人都能更好地排除故障。

不同的是 加载的页面是asynchronous的,所以如果你有外部样式表,它会在加载到链接标签时立即加载CSS文件,这就是为什么在头顶部是好的。

它会有什么不同?

优点:有时更容易在某些地方应用某些属性,特别是如果正在dynamic生成代码(例如通过php构build,每个dynamic大小的列表都需要自己的类别(例如变换的项目计时))。

缺点:稍微慢一些,在遥远的将来有一天可能无法工作。

我的一般意见:不要这样做,你不必这样做,但如果你必须这样做,不要失去它的任何睡眠。

<style>放在所有现代浏览器中都可以正常工作。

我一直在eBay上使用它。

如果有效的话,不要踢它。