是否可以将<link>
css 文件放在<head/>
标签之外,例如在页脚侧?
哪些是坏的和好的结果?
我问这个,因为实际上我有一个 css 文件,它没有任何样式,只是为我的网站带来了一些 css3 动画,所以出于性能原因,我想把它放在 html 的末尾......
谢谢
是否可以将<link>
css 文件放在<head/>
标签之外,例如在页脚侧?
哪些是坏的和好的结果?
我问这个,因为实际上我有一个 css 文件,它没有任何样式,只是为我的网站带来了一些 css3 动画,所以出于性能原因,我想把它放在 html 的末尾......
谢谢
样式表在 中链接,<head>
以便浏览器可以设置 HTML 的样式并在运行时呈现它。如果您将样式信息放在文档的底部,浏览器将不得不重新设置样式并再次从顶部呈现整个文档。
首先,这需要更长的时间,其次,看起来真的很难看。
这与包含的脚本不同,因为脚本将阻止加载,直到它们完成,因此您在此过程中尽可能晚地加载它们。
根据 W3 规范,<link>
标签只应该放在以下<head>
部分:
对于 HTML 4.01: http ://www.w3.org/TR/html401/struct/links.html#edef-LINK
对于 HTML5: http ://www.w3.org/TR/html5/document-metadata.html#the-link-element
早在 2013 年,如果您在 HTML 文档中放置一个link
标签body
,它就不会使用基于 HTML 4.01 的规则的validate.w3.org 进行验证。
(您可以在https://validator.nu试用 HTML 4.01 与 HTML 5.0 验证)
初读时,HTML 5.0 规范文档似乎暗示link
's 应该只出现在head
文档的元素中。但是,如果您使用 HTML 5.0 验证器进行验证,那么即使您link
在流内容中有一个文档,文档也会显示正常。
对这种差异的最佳解释可能如下。
如果您阅读该条目的 MDN 文档link
(MDN 链接条目),您会看到如果link
元素具有itemprop
属性,则link
可以出现在流和短语内容中,因此,在body
.
这可能是 HTML 5.0 验证器即使该itemprop
属性不存在也不发出警告的原因。
它itemprop
是微数据规范的一部分,相对较新(阅读 HTML 微数据),值得一读。
目前,可以在link
中添加一个样式表body
,但不清楚有什么优势。
这是一个古老的讨论,但我认为在这里值得注意的是,Google Pagespeed Insights 实际上现在(2017 年)建议将大型 CSS 文件的加载推迟到首屏以下,以确保它们不会阻止 html 的加载。
是的,HTML5 规范可以在 body 元素中放置一个链接元素。如果这是一个坏主意或好主意取决于您的链接。如果呈现您网站的第一个视图并不重要,那么我认为尽可能晚地加载它是一个好主意。
WHATWG HTML Standard 允许<link>
在相当多的特定情况下在正文中。
至于放在<link>
之前的“合理性” </body>
,最近我用它来预加载画廊中的一些大图:
<link rel="preload" href="images/big/01.jpg" as="image">
因此,当用户单击缩略图时,通常无需等待服务器响应,因为图像已经加载到浏览器缓存中。
您必须<!DOCTYPE html>
在任何<link>
标签之前放置。根据经验,它可能会导致某些页面出现故障。
随着软件开发中的一切,事情发生了变化。现在它被认为是正文中的良好实践 CSS,例如:
<head>
</head>
<body>
<!-- HTTP/2 push this resource, or inline it, whichever's faster -->
<link rel="stylesheet" href="/site-header.css">
<header>…</header>
<link rel="stylesheet" href="/article.css">
<main>…</main>
<link rel="stylesheet" href="/comment.css">
<section class="comments">…</section>
<link rel="stylesheet" href="/about-me.css">
<section class="about-me">…</section>
<link rel="stylesheet" href="/site-footer.css">
<footer>…</footer>
</body>