style 标签写在 body 后与 body 前有什么区别?
页面加载自上而下当然是先加载样式。
写在 body 标签后由于浏览器以逐行方式对 HTML 文档进行解析,当解析到写在尾部的样式表(外联或写在 style 标签)会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染,在 windows 的 IE 下可能会出现 FOUC 现象(即样式失效导致的页面闪烁问题)。
补充:除了 FOUC,
style写在body后还可能造成:
- 渲染阻塞:浏览器必须丢弃已经绘制好的内容,重新解析样式后再次回流/重绘,性能更差。
- JS 报错:若 JS 中
getComputedStyle/offsetWidth等依赖最终样式的 API 执行时样式尚未解析完,会拿到错误值。正确做法:所有
<style>/<link rel="stylesheet">一律放在<head>中;非首屏关键样式可用media/preload异步加载,避免阻塞关键渲染路径。



