style 标签写在 body 后与 body 前有什么区别?

页面加载自上而下当然是先加载样式。

写在 body 标签后由于浏览器以逐行方式对 HTML 文档进行解析,当解析到写在尾部的样式表(外联或写在 style 标签)会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染,在 windows 的 IE 下可能会出现 FOUC 现象(即样式失效导致的页面闪烁问题)。

补充:除了 FOUC,style 写在 body 后还可能造成:

  • 渲染阻塞:浏览器必须丢弃已经绘制好的内容,重新解析样式后再次回流/重绘,性能更差。
  • JS 报错:若 JS 中 getComputedStyle / offsetWidth 等依赖最终样式的 API 执行时样式尚未解析完,会拿到错误值。

正确做法:所有 <style> / <link rel="stylesheet"> 一律放在 <head> 中;非首屏关键样式可用 media / preload 异步加载,避免阻塞关键渲染路径。