是替换元素,内部文本被忽略;显示数值需额外文本节点或JS同步更新;value/max应为非负浮点数且value≤max;推荐max="100"并用Math.round()处理小数;无障碍须加aria-valuetext。
标签本身不显示数值,只渲染进度条视觉状态;要显示“xx%”或具体数字,必须手动添加文本节点或用 JS 同步更新。
里写数字没用?HTML5 规范明确: 是**替换元素(replaced element)**,其内容(比如 )会被浏览器忽略,不参与渲染。你看到的只是浏览器内置样式画的一条条纹,没有文本插槽。
常见错误现象:
→ 页面上完全不显示该文字::after 伪元素往 上加内容 → 大部分浏览器不支持(Chrome/Firefox 均无效)value 和 max 怎么设才合理?进度条数值逻辑由两个属性控制:value 表示当前完成值,max 表示总量,默认为 1。两者都必须是**非负浮点数**,且 value 不得大于 max,否则行为未定义(多数浏览器会截断为 max)。
立即学习“前端免费学习笔记(深入)”;
使用建议:
max="100",value 直接填整数(如 value="65"),语义清晰、调试直观value="0.65" + max="1",容易因 JS 浮点误差导致显示卡在 99%(比如 0.999999999 被截断)Math.round(progress * 100)
唯一可靠方式:把 和文本放在同一容器中,用 JS 或服务端同步更新文本内容。
0%
注意点:
innerHTML 改 内部 —— 无效position: absolute),可访问性差,屏幕阅读器无法关联进度值和文本
障碍支持,务必给 加 aria-valuetext 属性:
最易被忽略的是 aria-valuetext —— 它不改变视觉,但决定了屏幕阅读器读出的内容。没它,视障用户只能听到“进度条”,不知道当前是多少。