使用标签需同时设置value和max属性,否则进入不确定状态;动态更新应直接赋值el.value而非setattribute;样式定制须通过伪元素且先设appearance: none。

直接用 <progress></progress> 标签就能展示任务进度条,不需要额外库,但必须同时设置 value 和 max 属性,否则会进入“不确定状态”——浏览器可能显示脉冲动画,而不是真实进度。
正确写法:必须带 value 和 max
只写 <progress></progress> 或只设 value="80" 不设 max,进度条不会按预期显示 80%。推荐始终显式声明:
-
<progress value="0" max="100"></progress>(适合百分比场景) -
<progress value="2456" max="10000"></progress>(适合字节、项数等真实量纲)
注意:max 默认是 1,省略容易导致小数精度问题(比如后端返回 value="0.68" 却没设 max),显式写出更稳妥。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
动态更新:靠 JS 改 value,不是 setAttribute
进度条本身不自动动,必须用 JavaScript 更新它的 value 属性:
- ✅ 正确:
el.value = 75(直接赋数字,触发 DOM 重绘) - ❌ 错误:
el.setAttribute('value', '75')(只改 HTML 属性,Safari 等浏览器不响应) - 从接口或输入获取的值要转成数字,例如
Number(data.progress)或+data.progress - 防超限:计算时用
Math.min(Math.round(loaded / total * 100), max),避免网络抖动造成value > max
上传类场景:优先监听 upload.onprogress
比起定时器模拟,用原生事件更准确:
- XMLHttpRequest 的
upload.onprogress提供event.loaded和event.total - Fetch 配合
ReadableStream分块读取也能实现真实进度 - 避免单纯用时间戳估算,尤其在网络波动或大文件场景下误差明显
样式定制:用伪元素,别碰 font-size
<progress></progress> 不响应 background-color 或 width,必须通过伪元素控制:
- 先加
appearance: none清除默认样式 - Chrome/Safari/Edge:
progress::-webkit-progress-bar控轨道,progress::-webkit-progress-value控填充色 - Firefox:
progress::-moz-progress-bar(目前不支持分设轨道和填充) - 不要给
progress设font-size,它不渲染文字,该属性无效 - 圆角、高度、阴影等需通过外层容器控制
width、height、border-radius
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










