样式表上允许的DEFER或ASYNC包括?

Dou*_*oug 29 html css asynchronous deferred-loading

我知道脚本文件可以在资源包含上使用DEFER和ASYNC关键字.这些关键字是否也适用于样式表(即CSS)包括?

语法可能是:

<link rel="stylesheet" type="text/css" href="./path/to/style.css" defer />
Run Code Online (Sandbox Code Playgroud)

我只是不知道是否允许.

fms*_*msf 28

Defer并且Async是标记的特定属性<script> https://developer.mozilla.org/en/docs/Web/HTML/Element/script

它们不适用于其他标签,因为它们不存在.样式表不是包含要并行执行或在加载后执行的逻辑的脚本.样式表是一个静态样式列表,可以原子方式应用于html.

  • 这是可能的,并在这里提到,https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery (3认同)

Gij*_*ein 20

你可以这样做:

<link rel="stylesheet" href="/css/style.css" media="none" onload="if(media!=='all')media='all'" >
Run Code Online (Sandbox Code Playgroud)

并创建一个noscript后备

  • 这是做什么的? (3认同)
  • media 属性仅阻止应用样式。不是来自加载,所以这仍然会在加载时加载 .css 文件。 (2认同)

Rob*_*haw 9

截至2019年1月,此StackOverflow帖子在某些Google搜索中仍然排名第一。因此,我提出这个为那些谁降落在这里寻求推迟你的CSS的加载迟到的回答。

信用: https : //www.giftofspeed.com/defer-loading-css/


要点

</body>在html文档的结束标记上方添加以下内容

<script type="text/javascript">
  /* First CSS File */
  var giftofspeed = document.createElement('link');
  giftofspeed.rel = 'stylesheet';
  giftofspeed.href = '../css/yourcssfile.css';
  giftofspeed.type = 'text/css';
  var godefer = document.getElementsByTagName('link')[0];
  godefer.parentNode.insertBefore(giftofspeed, godefer);

  /* Second CSS File */
  var giftofspeed2 = document.createElement('link');
  giftofspeed2.rel = 'stylesheet';
  giftofspeed2.href = '../css/yourcssfile2.css';
  giftofspeed2.type = 'text/css';
  var godefer2 = document.getElementsByTagName('link')[0];
  godefer2.parentNode.insertBefore(giftofspeed2, godefer2);
</script>
Run Code Online (Sandbox Code Playgroud)

  • 请仔细阅读文档,如果 src 属性不存在,则不能使用 `defer` 属性,这就是所提出的解决方案的情况 (3认同)

sid*_*rta 9

截至 2020 年 9 月,我发现至少 Chrome 具有本机支持,可以使用属性延迟 CSS 以rel="preload"异步加载文件

<link href="main.css" rel="stylesheet" rel="preload" as="style"> 
Run Code Online (Sandbox Code Playgroud)

您可以使用更全面的方法使用 JavaScript 使其与大多数浏览器兼容,并noscript在未启用 JS 时包含一个选项

<link href="main.css" rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="main.css"></noscript>
Run Code Online (Sandbox Code Playgroud)

来源:https : //web.dev/defer-non-critical-css/