浅析FOUC是什么以及如何避免
一、FOUC 是什么
FOUC即无样式内容闪烁,也可以称为文档样式短暂失效,主要就是指HTML已加载而样式表并未加载,此后样式表再加载而产生的闪烁现象。
在引用css的过程中,如果方法不当或者位置引用不对,会导致某些页面在windows下的ie出现一些奇怪的现象,以无样式显示页面内容的瞬间闪烁,这种现象称之为文档样式短暂失效,简称FOCU
原因分析:当样式表晚于结构性 html 加载,当加载到此样式表时,页面将停止之前的渲染。 此样式表被下载和解析后,将重新渲染页面,也就出现了短暂的花屏现象。
二、如何避免FOUC
1、样式表前置
根据浏览器渲染的顺序,将CSS在<head>中引入或者嵌入,相对于将CSS放到<body>或者页面底部来说,可以使页面渲染速度加快,这对于页面内容比较丰富的网站或者网络链接较慢时相当重要。
假如将样式表放置于底部,就会导致浏览器还未加载样式表就开始渲染页面,无法渐进式渲染页面而直接从无样式状态立即跳转到有样式状态,就会造成FOUC,用户体验较差;
此外有些浏览器可能会在CSS下载完成后才开始渲染页面,样式表放在下方会导致页面渲染推迟。
2、尽量使用<link>而避免使用@import
当HTML文件被加载时,<link>引用的文件会同时被加载,而@import引用的文件则会等页面全部下载完毕再被加载,所以有时候浏览@import加载CSS的页面时会没有样式,会出现FOUC现象,网速慢的时候就比较明显。
此外当<link>与@import混用可能会对网页性能有负面影响,在一些低版本IE中<link>与@import混用会导致样式表文件逐个加载,破坏并行下载的方式导致页面加载变慢。
此外无论是哪种浏览器,若在<link>中引入的CSS中继续使用@import加载外部CSS,同样会导致顺序加载而不是并行加载,因为浏览器需要先解析<link>引入的CSS发现@import外部CSS后再次引入外部CSS,这样就导致页面加载变慢。
相关文章
- #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库
- 如何提升微服务的幸福感?
- HTTP Keep-Alive是什么?如何工作?(转)
- 如何用大数据探索市场营销实践
- 【刷题】面筋-mysql-如何对数据库进行备份
- 如何调试oracle,sqlserver存储过程
- java核心知识点学习----并发和并行的区别,进程和线程的区别,如何创建线程和线程的四种状态,什么是线程计时器
- Linux下如何查看版本
- JVM 调优实战--什么是调优及如何调优的思路
- 如何使用SAP事务码SAT进行UI应用的性能分析
- 什么是 ecommerce 的 distributor 概念以及如何实现 website redirect
- 如何找到SAP CRM WebClient UI error message的来源
- Atitit 如何做数据分析 描述型:发生了什么?可视化仪表盘化很重要。1 2. 诊断型:为什么会发生?结合历史记录1 3. 预测型:可能发生什么?2 4. 指导型 规划未来行动:我需要做什
- 什么是Github的元数据metadata以及如何备份github上的数据
- 阿里云RDS for PostgreSQL用户如何定制数据库参数
- 芯片里的CPU、GPU、NPU是什么,它们是如何工作的
- 基于lio-sam框架,教你如何进行回环检测及位姿计算
- 组织该如何选型OA系统,判定标准是什么?
- 数据结构与算法_16 _ 二分查找(下):如何快速定位IP对应的省份地址
- 【Linux驱动开发100问】什么是模块?如何编写和使用模块?
- 如何从docker镜像里提取dockerfile
- 到底什么是跨域?如何解决跨域问题
- webpack 的热更新是如何做到的?原理是什么?
- Transformer如何并行化? self-attention公式中的归一化有什么作用?
- 企业便携计算机,丢失、被盗如何更安全保护硬盘数据不易泄露