<link href="">标签只能放在<head>标签里吗?

30

可以/是否应该使用<link href="">将样式表包含在<head>标签之外,还是它们只能在<head>中起作用/应该仅在<head>中使用?

7个回答

22

这是可以做到的。

不建议这样做,因为在 <link> 之前的任何内容都会开始呈现,然后当样式表加载时会使用新的样式重新呈现。这意味着页面加载会变慢(因为浏览器必须重新执行所有这些工作),并且会出现一个风格不同的内容闪烁,看起来很丑。


4
然而,它不符合w3c规范。 - DarkLeafyGreen
4
好的。"可能性"和"有效性"的问题是完全不同的问题! - Boris Zbarsky
1
在HTML 5中,这是可以的;<link rel="stylesheet">是可以用于body的:https://www.w3.org/TR/html52/links.html#sec-link-types - Peppe L-G

7

虽然我不知道有哪个浏览器不会应用样式,但是在 head 之外它们是无效的。


5

我添加了一个W3C参考作为备选方案。 - DarkLeafyGreen
w3schools 不应该是你引用有关 HTML 实践的参考资料的最后一站。 - qwr
此外,关于所有 link 类型只允许在 head 中出现的说法在 HTML5 中是错误的。 - qwr

5
根据HTML 4.01规范,<link>标签必须出现在头部部分:

该元素定义了一个链接。与A不同,它只能出现在文档的HEAD部分,尽管可以出现任意次数。虽然LINK没有内容,但它传递了关系信息,可以由用户代理以各种方式呈现(例如,带有链接下拉菜单的工具栏)。

来源W3C:http://www.w3.org/TR/html401/struct/links.html#edef-LINK

4
<link>标签不会定义网页的结构,因此应将其放在<head>中而非<body><footer>中。我想不出任何理由为什么你会想要/需要把它放在其他位置。

我只在一个页面上使用JavaScript日期选择器,并且需要仅为该页面包含其CSS,因为所有页面都共享标题模板,所以如果我将其放在<head>中,则会在每个页面上加载。 - Ali
这是一个继承问题。应该有比在结构中使用元标签更好的解决方法。也许您需要重新配置模板加载方式,以便在需要时向单个页面添加头代码。 - Alex Waters

1
在HTML5中,特定的链接类型“stylesheet”可以放置在元素内,因为根据https://html.spec.whatwg.org/multipage/links.html#linkTypes它是“body-ok”的。
注意:html只允许包含两个元素,head和body。但是如果你将链接直接放在html下面,标准有时会允许这样做,因为它允许在某些情况下省略和开始和结束标签。这是由于糟糕的遗留页面造成的,您永远不应该这样做。
总结:把你的链接放在中就好了。

-1

是的,<meta> 元素是元数据元素,其允许的父元素是 <head> 或者 <head> 中的一个元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接