必须将放在和之后、之前,以避免fouc、确保渲染安全并兼顾语义与验证;它默认同步阻塞解析,不可异步,且无法缓存,应仅含关键css。

为什么
浏览器解析 HTML 是流式的,<style></style> 要在首个 DOM 元素渲染前就就位,否则可能触发 FOUC(无样式内容闪烁)。把 <style></style> 放在 <title></title> 和 <meta> 之后、<script></script> 之前,是兼顾语义、验证通过和渲染安全的最小安全位置。
- 放在
<title></title>前:部分旧工具链会警告 meta 信息缺失 - 放在
<script></script>后:JS 可能提前执行并操作 DOM,此时样式还没加载,导致 layout shift 或计算错误 - 多个
<style></style>标签:按顺序层叠,后出现的同优先级规则会覆盖前面的
内部样式里哪些 CSS 特性不能用
<style></style> 块只认标准 CSS 语法,不是“CSS 文件的简化版”,很多你以为能用的其实会被忽略或报错。
-
@import:禁止直接写在<style></style>里——它会阻塞渲染,且必须位于所有规则最前,极易静默失效 -
@layer:Chrome 117+ 支持,但 Safari 16.4 仍不支持,生产环境慎用 - 本地路径引用(如
url(./img/bg.png)):可以写,但路径是相对于 HTML 文件的,不是相对于<style></style>标签位置 - HTML 注释
<!-- -->:会被当成非法字符,整块样式可能失效;必须用/* */
怎么控制内部样式的加载时机和性能影响
<style></style> 默认同步阻塞 HTML 解析,但它没有 defer 或 async 属性,也不能被懒加载。优化重点不在“怎么异步”,而在“怎么少加载”。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 避免在 SPA 的主 HTML 中塞大量 CSS:壳页面只需 critical CSS,其余走
<link rel="stylesheet"> - 用
media属性做条件加载,例如<style media="print"></style>不影响屏幕渲染 - 不要用
!important堆砌覆盖:内部样式优先级本就高于外部 CSS,滥用!important会让后续维护无法靠特异性调整 - 若需动态注入,改用 JS 创建
<style></style>标签并 append 到,而非写死在 HTML 中
和内联样式、外部 CSS 混用时谁赢
层叠顺序不是“谁在 head 里谁优先”,而是由**来源 + 特异性 + 顺序**共同决定。内部样式(<style></style>)本身没有固定权重,它的选择器特异性才起作用。
- 内联
style="color: red":权重为 1000,稳压任何<style></style>里的p { color: blue }(权重 1) -
<style></style>里的#header { color: green }(权重 100)能盖过外部 CSS 的.nav a { color: purple }(权重 10) - 同权重时,后出现的规则胜出——所以把重置类(如
.reset)放在<style></style>开头,定制规则放后面 - 注意:
<link>引入的外部 CSS 如果放在<style></style>后面,它的同权重规则也会覆盖前面的内部样式
真正容易被忽略的点是:内部样式无法被缓存,也无法被构建工具压缩、拆包或提取为 CSS-in-JS 模块。哪怕只多写了 2KB 的通用按钮样式,每次 HTML 请求都得重传一遍——这比一个 5KB 的外部 CSS 文件反复复用要贵得多。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










