了解CSS渲染

问题描述 投票:0回答:1

所以我到处都读到CSS是render block。尽管这与<script>标记引起的阻止不同,因为它不会暂停HTML的解析。浏览器基本上等待CSSOM生成,然后仅将任何内容呈现给网页。因此,CSS加载较晚时,可能会影响网页的加载时间。但是我不明白的是,如果是这种情况,FOUC(未样式化内容的Flash)是如何引起的? FOUC基本上是在浏览器暂时显示HTML而不显示样式的情况下,然后在CSS可用时显示正确样式的页面。因此,如果浏览器在呈现任何内容之前始终等待CSS的加载和解析,则不应该发生FOUC。

css browser
1个回答
0
投票

如果浏览器始终在呈现任何内容之前始终等待CSS的加载和解析,则不应该发生FOUC。

确实,在这种情况下,应该发生这种情况,除了浏览器在渲染之前不等待所有资源加载之前。

请注意,这与您“到处阅读”并不矛盾,如果您确实读过““ [[浏览器基本上等待CSSOM生成,然后仅将任何内容呈现给网页。“

浏览器可以很好地构建CSSOM,同时仍然会丢失资源,例如,它绝对不需要加载所有背景图像资源来计算元素的框位置。实际上,甚至在构建DOM时甚至甚至[都可以构建CSSOM,因为在类似以下代码段的情况下,您需要CSSOM才能使js工作:

<h1>test</h1> <script> // without CSSOM, we couldn't get its width yet console.log(document.querySelector('h1').offsetWidth); </script> <style> /* even if it's gonna be invalidated later on */ h1 { width: 300px; border:1px solid; } </style>
© www.soinside.com 2019 - 2024. All rights reserved.