我仍然无法理解“ CSS is render-blocking”]的概念。我非常了解JS如何解析器阻止。但是,前者对我来说仍然有点不清楚。
让我们举个例子:
index.html:
<!DOCTYPE html> <html> <head> <title>Some Document</title> <link href='cdn1.com/styles1.css' rel="stylesheet"/> <link href='cdn2.com/styles2.css' rel="stylesheet"/> </head> <body> ... ... </body> </html>
style1.css(来自CDN1):
body { background: blue }
style2.css(来自CDN2):
,而来自cdn2的style2花了500ms。我想知道最终用户会在以下时间轴之间在浏览器中看到所有的事情:body { background: red }
现在,假设来自cdn1的style1.css花了1秒
此外,结果在所有浏览器(主要是Edge,Chrome,Firefox和Safari)上是否一致?
我仍然无法非常清楚地理解“ CSS是渲染块”的概念。我非常了解JS如何解析器阻止。但是,前者对我来说还不清楚。让我们以...
您需要知道的是“ CSS对象模型”。 CSS的渲染与JS的渲染不同。当所有CSS被下载后,“主树”被创建,并决定对于所有inline CSS, internal CSS, external CSS
-将应用哪些最终规则。
此最后的树称为https://developer.mozilla.org/en-US/docs/Web/API/CSS_Object_Model
以下示例使用故意延迟的资源来说明会发生什么。因为它每次都使用动态资源来显示不同的ID并提供缓存清除功能,所以我无法使用堆栈代码段,但我将向您展示关键代码和指向工作示例的链接。