白屏和FOUC
白屏与无样式内容闪烁(FOUC)是因为不同浏览器加载与显示页面的机制不同而造成的。
我们可以通过一个实验来进行测试和模拟白屏、FOUC的现象,让我们更好的理解白屏、FOUC。
测试demo
https://github.com/evenyao/whitescreen-fouc-test
步骤README.md中已经大概有了,下面整合一些截图,方便理解。
具体分析
白屏测试 / 且js放在css之后
HTML CSS加载完成后样式就出现了,js未加载完成,但并不影响样式显现FOUC测试 (使用FireFox浏览器)
HTML优先被加载出来了,但我们没有看到任何样式呈现 加载完成之后,我们看到了样式,即出现了FOUC其他
白屏测试 / 且js放在CSS之前
HTML 可以看到CSS已经加载完成,但因为js并未加载完成,产生了堵塞,从而导致了样式没有展现 直到js也全部加载完成之后,样式才得以出现这个时候我们来测试一下
async
白屏测试 / 且js放在css之后 但加了async异步
HTML 可以看到即使js放在前面,且没有加载完成,样式还是成功显现了 测试async异步效果成功defer也是同理,同时也更好的理解了异步加载。
关于白屏、FOUC和异步加载的概念,参考之前写的初涉 JavaScript
网友评论