标签仅用于语义标注变量名,不参与计算或绑定js值;它仅向辅助技术表明“这是变量”,默认斜体显示,不可替代mathml或js变量。

<var></var> 标签不是用来“定义变量”的,它不声明、不存储、不参与计算,也不绑定 JavaScript 值。你在数学公式里写 <var>a</var>,浏览器不会把它当变量处理,更不会自动代入数值——它只是告诉屏幕阅读器“这是个变量名”,顺便默认用斜体显示。
为什么<var></var>不能替代 JS 变量或 MathML 变量
常见误解是:在公式 <p><var>a</var><sup>2</sup> + <var>b</var><sup>2</sup> = <var>c</var><sup>2</sup></p> 里,以为 <var></var> 能让 a、b、c 参与运算或样式联动。实际它只做三件事:
- 语义标注:辅助技术(如读屏软件)可能读作 “variable a”
- 默认视觉提示:UA 样式设为
font-style: italic,但可被 CSS 覆盖 - 无 DOM 行为:不触发任何事件、不响应
data-属性解析、不支持value或contenteditable等交互属性
真正需要数学排版(比如上下标对齐、字体微调、可缩放矢量渲染),必须用 <math></math> + MathML 或 KaTeX/LaTeX 渲染器;<var></var> 只负责“命名”这个动作。
<var></var> 在数学文档中怎么用才不翻车
核心原则:只包裹「被提及的符号名」,不包裹「值」「表达式」「运算符」或「JS 可执行内容」。
- ✅ 正确:
<p>设 <var>r</var> 为半径,<var>π</var> 为圆周率,则面积 <var>A</var> = <var>π</var><var>r</var><sup>2</sup></p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill9263" title="Html2md"><img src="https://img.php.cn/upload/skill/000/000/081/179249945220127.jpg" alt="Html2md" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill9263" title="Html2md" class="overflowclass">Html2md</a> <p class="overflowclass">使用 Readability + Turndown 将 HTML 页面转换为干净的、Agent 友好的 Markdown。去除导航栏、广告、页脚、Cookie 横幅、社交按钮等干扰元素。支持 URL...</p> </div> <a rel="nofollow" href="/xiazai/skill9263" title="Html2md" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> - ❌ 错误:
<p><var>A = πr²</var></p>—— 整个等式不是变量名,应拆开或用<code>+<var></var>组合 - ❌ 错误:
<p><var data-value="3.14159">π</var></p>——data-value不会自动转成 JS 变量,也不会影响渲染 - ⚠️ 注意:若项目禁用斜体(如全局重置
font-style: normal),需手动加样式var { font-style: italic; },否则语义视觉提示丢失
和 <code>、<math></math> 混用时的关键分界
很多人把 <var></var> 套在 <code> 里,或者当成轻量 MathML 用,结果语义混乱、样式打架、读屏异常。
-
<var></var>+<code>:仅当变量名出现在代码上下文中才嵌套,例如<code>fetch(<var>url</var>)</code>
<var> + <code><math></math>:不要混——MathML 自带变量语义(如<mi>a</mi>),再套<var></var>是冗余且无效的- 纯文本公式(无 MathML 支持场景):可用
<var></var>标注变量,但需配合<sup></sup>/<sub></sub>手动排版,无法实现自动间距、字体匹配等专业排版效果 - 无障碍陷阱:若公式含多个
<var></var>且未加aria-label或上下文说明,屏幕阅读器可能连续读出 “variable a, variable b, variable c”,用户无法理解关系
最易被忽略的一点:<var></var> 的价值不在视觉,而在语义链路——它让变量名能被爬虫、读屏器、翻译工具识别为「可替换占位符」。一旦你开始用它承载逻辑(比如靠 class 控制显隐、靠 dataset 驱动计算),就已脱离设计本意,该换真实数据绑定方案了。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










