如何避免FOUC

289 阅读2分钟

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, 这样就导致页面加载变慢