安装与调用
单独使用:
<link rel="stylesheet" href="https://qidian.gtimg.com/lulu/hope/ui/Progress/index.css">
部分 HTML 快捷属性想要生效,还需要引入对应的组件 JS,如下所示:
<script type="module" src="https://qidian.gtimg.com/lulu/hope/ui/Progress/index.js"></script>
或者:
<script type="module"> import 'https://qidian.gtimg.com/lulu/hope/ui/Progress/index.js'; </script>
基本状态
通过给 <progress>
元素设置 is="ui-progress"
。
<progress is="ui-progress"></progress>
也支持 class
类名设置样式,不过只有静态效果,非不必要不要使用。
<progress class="ui-progress"></progress>
设置value
设置 value
值后,进度条就变成静态的进度效果,不会有来回的动画。
进度条默认范围是 0-1
,因此,如果设置 value="0.5"
,会显示一半进度。
<progress is="ui-progress" value="0.5"></progress>
<button id="rb" type="primary" is="ui-button">设置随机 value 值</button>
<progress id="pg" is="ui-progress" value="0.5"></progress>
// 随机进度值
rb.addEventListener('click', function () {
pg.value = Math.random();
});
设置 max
进度范围尺度可以通过 max
属性进行设置,例如:
<progress class="ui-progress" value="40" max="100"></progress>
上传中:
样式设置
尺寸设置
使用 CSS 的 width
和 height
属性进行设置,如果引入了对应的组件 JS,还可以在 <progress>
元素上使用 width
和 height
属性进行设置,支持任意的长度单位、函数。
<progress is="ui-progress" value=".5" width="10em"></progress>
<progress is="ui-progress" value=".5" height=".5rem"></progress>
颜色设置
使用 CSS 的 color
属性进行设置,如果引入了对应的组件 JS,还可以在 <progress>
元素上使用 color
属性进行设置,支持任意的色值、渐变以及合法的函数。
<progress is="ui-progress" value=".5" color="var(--ui-red)"></progress>
<progress is="ui-progress" value=".8" color="linear-gradient(to right, deepskyblue, deeppink) no-repeat 0 / 100vw"></progress>
圆角设置
设置 radius="0"
可以让进度条表现为直角。
<progress is="ui-progress" value=".5" height=".5rem" radius="0"></progress>
底层实现
进度条的样式设置是通过若干 CSS 变量实现的。
CSS 自定义属性 | 默认值 | 释义 |
---|---|---|
--ui-progress-width | 100% | 进度条宽度 |
--ui-progress-height | .25em | 进度条高度 |
--ui-progress-color | #2a80eb | 已完成进度条颜色,支持渐变 |
--ui-progress-background-color | #d0d0d5 | 进度条底色,只支持颜色值 |
--ui-progress-radius | 2rem | 进度条圆角大小 |
通过改变以上 CSS 自定义属性的值,也是可以设置进度条的样式的。
标签提示
如果希望在进度条上实时显示进度值,可以通过 label
属性实现。
<!-- 也可以是 label="true" --> <progress is="ui-progress" value=".35" label></progress>
支持使用任意的自定义格式,例如:
<progress is="ui-progress" value=".35" label="${value}/${max}"></progress>
<progress is="ui-progress" value="22.5" max="30" color="var(--ui-purple)" label="百分之${Math.round(100*value/max)}"></progress>
目前可使用的的模板变量是 ${value}
和${max}
。
自定义背景
提示标签支持样式的自定义,包括使用图像代替,语法是使用下面几个 CSS 变量。
CSS 自定义属性 | 默认值 | 释义 |
---|---|---|
--ui-progress-background-label | var(--ui-progress-color) | 标签文字背景,默认和已完成进度背景一致 |
--ui-progress-color-label | #fff | 标签文字颜色,默认是白色 |
--ui-progress-offset-label | calc(var(--ui-progress-percent) * -1) | 标签文字相对自身的负偏移,默认跟随百分比度进度值进行反向偏移 |
下面是一个使用案例,使用火箭图标作为进度标签的背景。
<progress is="ui-progress" class="progress-rocket" value=".35" label="true"></progress>
.progress-rocket {
--ui-progress-background-label: url(roctet.svg);
--ui-progress-color-label: transparent;
/* 图标居中偏移 */
--ui-progress-offset-label: -50%;
/* 完成进度条颜色 */
color: #38603a;
/* 增加火箭图标尺寸 */
line-height: 1.75;
}
请求模拟
为了最佳效果演示,请打开控制台,进入慢速模式。
本页贡献者:
zhangxinxu,gandao