CSS变量在style属性中仅支持定义(如--color: red),不支持引用(如color: var(--color)),因var()由CSS解析器在样式计算阶段处理,HTML解析style时只识别标准声明,主流浏览器均不支持该用法。

能,但只能定义,不能引用——style="--color: red"合法,style="color: var(--color)"无效。
为什么var(--x)在style属性里完全不生效
浏览器解析style属性时只认标准 CSS 声明(如color: red),var()是 CSS 解析器在样式计算阶段才处理的函数,根本不在 HTML 字符串解析流程中。哪怕:root里定义了--primary,div style="color: var(--primary)"也会被静默丢弃,DevTools 的 Styles 面板里压根不显示这条声明。
这不是拼写、转义或作用域问题,而是规范层面的限制:所有主流浏览器(Chrome 120+、Firefox 115+、Safari 17+)均不支持。
style里能写的 CSS 变量只有--xxx: value形式
你可以在style属性中直接定义变量,例如:
立即学习“前端免费学习笔记(深入)”;
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
<div style="--accent: #007bff; --gap: 12px"></div>
这些变量会作用于该元素及其所有后代,且优先级高于:root定义的同名变量。但注意:
- 不能混写普通样式和变量声明(如
style="color: red; --accent: blue"虽不报错,但可读性差,建议拆开) - 变量值必须带单位(
--size: 16px✅,--size: 16❌) - 变量名区分大小写,
--Color和--color是两个变量
想动态改颜色?别往style里塞var(),用setProperty()
如果目标是 JS 控制颜色变化,正确路径是:
- 确保变量已在 CSS 中声明:
:root { --text-color: #333; } - 用
document.documentElement.style.setProperty('--text-color', '#007bff')更新 - 让 CSS 规则消费它:
.title { color: var(--text-color); }
别写element.style.color = 'var(--text-color)'——这只是把字符串当颜色值,浏览器不会解析;也别用getComputedStyle().getPropertyValue()再赋给style.color,那是兜底方案,绕过了 CSS 变量的级联优势。
真正容易被忽略的是:CSS 变量的设计本意是“声明 + 级联 + 响应”,不是为内联样式服务的。一旦你开始频繁在style里手动拼var(),大概率说明架构上更适合用 class 切换或提升变量作用域,而不是硬塞值。


















