应使用 表示已知范围内的静态测量值(如CPU使用率65%),而 用于动态任务进度(如上传完成73%); 必须显式设置 value、min 和 max 以确保语义正确与无障碍支持。
标签用于在 HTML5 中表示一个**已知范围内的
标量值**,比如磁盘使用率、投票占比、加载进度(固定范围)等——它不是进度条,不反映任务执行状态,只表达“当前值在 min~max 区间中的位置”。
而不是
关键区别在于语义和动态性:
描述静态或可变但有明确上下限的**测量值**(如:CPU 使用率 65%,满分 100%;评分 4.2/5) 描述**正在进行的任务进度**(如:文件上传完成 73%,最终值未知或不可预估) 会读作“x of y”, 读作“x percent complete”min/max 范围, 仍渲染,但视觉上可能触发 low/optimum/high 状态色(取决于 UA 样式) 必须设置的属性与常见误配它至少需要 value 和 min+max(或依赖默认值),否则语义失效且可能被屏幕阅读器忽略:
value:必需,当前测量值(数字)min:默认为 0,但显式声明更安全(尤其当值可能为负时)max:默认为 1,若实际范围是 0–100,必须写 max="100",否则 value="85" 会被当作 85/1 = 8500%low / high / optimum:可选,用于定义区间语义(如“低于 30% 为 low”,“70–90% 为 optimum”),影响部分浏览器的背景色,但不改变数值逻辑85% used
原生 在 Chrome/Firefox/Edge 中支持良好,Safari 支持但默认样式较简陋;无法用 CSS 直接修改内部轨道/滑块结构(类似 ),需借助伪元素:
meter::-webkit-meter-inner-element、meter::-webkit-meter-bar、meter::-webkit-meter-optimum-value 等meter::-moz-meter-bar,但粒度较粗 + ARIA 属性(aria-valuenow、aria-valuemin、aria-valuemax)替代
最常被忽略的是 max 的默认值——很多人写 却忘了加 min="0",导致小数精度或负值场景下语义错乱。它不是装饰性组件,每个属性都在参与语义表达。