首屏文本渲染是前端性能优化中容易出错的环节之一。核心结论是:首屏文本不能等到CSS加载完成再显示。因为浏览器必须等待关键CSSOM构建完成后才能生成渲染树。在弱网环境下,外部CSS可能因pending状态阻塞超过两秒。此时,即使``中已存在标题和段落,用户仍会看到白屏。这并非“样式未加载”,而是渲染流程被卡在了CSSOM阶段。

### 为什么首屏文本不能等CSS加载完才显示
问题的根源在于,浏览器必须等关键CSSOM构建完成才能生成渲染树。而外部CSS在弱网环境下可能卡在`pending`状态超过两秒——此时``里已经塞满了标题、段落等文本节点,但用户看到的仍是白屏或骨架屏。这不是“样式没出来”,是整个渲染流程被阻塞在CSSOM环节。
具体怎么解决?几个硬性规则需要记牢:
- 关键CSS必须内联进``,且只包含首屏文本所需的`font-size`、`line-height`、`color`、`margin`等基础声明,体积控制在10KB以内
- 非关键CSS改用`
`异步加载,避免阻塞
- 禁用`@import`引入CSS,它会隐式创建串行依赖,弱网下放大延迟
### 骨架屏DOM结构怎么写才不塌、不抖、不闪
90%的骨架屏塌陷,原因其实很简单——没设尺寸,只靠`background-color`撑不开流式布局。浏览器会把空`
`当成0×0像素来渲染,真实内容一插入,必然引发重排。
骨架屏的设计是一份视觉契约,它必须和真实DOM共用同一套尺寸计算逻辑。这里有几个关键点值得反复核对:
- 图片占位必须用`aspect-ratio: 16 / 9`(现代方案)或`padding-top: 56.25%`加`position: relative`配合子元素`position: absolute`实现
- 文字行占位用`line-height×行数`设高度,比如三行正文就写`height: calc(1.5em * 3)`,千万禁用`height: 100%`
- 所有骨架块加`overflow: hidden`,否则`background-position`动画会溢出圆角边界
- 绝对禁用`
![]()
`、`