如何避免FOUC

​FOUC​​​即无样式内容闪烁也可以称为文档样式短暂失效,主要就是指​​HTML​​已加载而样式表并未加载,此后样式表再加载而产生的闪烁现象。

样式表前置

根据浏览器渲染的顺序,将​​CSS​​​在​​<head>​​​中引入或者嵌入,相对于将​​CSS​​​放到​​<body>​​​或者页面底部来说,可以使页面渲染速度加快,这对于页面内容比较丰富的网站或者网络链接较慢时相当重要。假如将样式表放置于底部,就会导致浏览器还未加载样式表就开始渲染页面,无法渐进式渲染页面而直接从无样式状态立即跳转到有样式状态,就会造成​​FOUC​​​,用户体验较差;此外有些浏览器可能会在​​CSS​​下载完成后才开始渲染页面,样式表放在下方会导致页面渲染推迟。

尽量避免使用@import

尽量使用​​<link>​​​而避免使用​​@import​​​,当​​HTML​​​文件被加载时,​​<link>​​​引用的文件会同时被加载,而​​@import​​​引用的文件则会等页面全部下载完毕再被加载,所以有时候浏览​​@import​​​加载​​CSS​​​的页面时会没有样式,会出现​​FOUC​​​现象,网速慢的时候就比较明显。此外当​​<link>​​​与​​@import​​​混用可能会对网页性能有负面影响,在一些低版本​​IE​​​中​​<link>​​​与​​@import​​​混用会导致样式表文件逐个加载,破坏并行下载的方式导致页面加载变慢。此外无论是哪种浏览器,若在​​<link>​​​中引入的​​CSS​​​中继续使用​​@import​​​加载外部​​CSS​​​,同样会导致顺序加载而不是并行加载,因为浏览器需要先解析​​<link>​​​引入的​​CSS​​​发现​​@import​​​外部​​CSS​​​后再次引入外部​​CSS​​,这样就导致页面加载变慢。

每日一题

https://github.com/WindrunnerMax/EveryDay