You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
layui/docs/progress/index.md

236 lines
6.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
title: 进度条 progress
toc: true
---
# 进度条
> 进度条 `progress` 可应用于许多业务场景如任务完成进度、loading 等等。
<h2 id="examples" lay-toc="{hot: true}" style="margin-bottom: 0;">示例</h2>
<pre class="layui-code" lay-options="{preview: true, text: {preview: '常规用法'}, layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-progress">
<div class="layui-progress-bar" lay-percent="30%"></div>
</div>
<hr class="ws-space-16">
<div style="width:300px">
<div class="layui-progress">
<div class="layui-progress-bar" lay-percent="50%"></div>
</div>
</div>
<!-- import layui -->
</textarea>
</pre>
进度条宽度是 100% 适配于它的父级元素,如上面的进度条是在一个 300px 的父容器中。
<h3 id="color" lay-toc="{level: 2}">进度条主题</h3>
<pre class="layui-code" lay-options="{preview: true, layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-progress">
<div class="layui-progress-bar layui-bg-red" lay-percent="10%"></div>
</div>
<hr class="ws-space-16">
<div class="layui-progress">
<div class="layui-progress-bar layui-bg-orange" lay-percent="30%"></div>
</div>
<hr class="ws-space-16">
<div class="layui-progress">
<div class="layui-progress-bar layui-bg-primary" lay-percent="50%"></div>
</div>
<hr class="ws-space-16">
<div class="layui-progress">
<div class="layui-progress-bar layui-bg-blue" lay-percent="60%"></div>
</div>
<hr class="ws-space-16">
<div class="layui-progress">
<div class="layui-progress-bar" lay-percent="70%"></div>
</div>
<!-- import layui -->
</textarea>
</pre>
<h3 id="size" lay-toc="{level: 2}">大号进度条</h3>
通过对进度条容器追加 `className``layui-progress-big` 可设置大尺寸风格的进度条。
<pre class="layui-code" lay-options="{preview: true, layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-progress layui-progress-big">
<div class="layui-progress-bar" lay-percent="15%"></div>
</div>
<hr class="ws-space-16">
<div class="layui-progress layui-progress-big">
<div class="layui-progress-bar layui-bg-orange" lay-percent="35%"></div>
</div>
<hr class="ws-space-16">
<div class="layui-progress layui-progress-big">
<div class="layui-progress-bar layui-bg-blue" lay-percent="75%"></div>
</div>
<!-- import layui -->
</textarea>
</pre>
<h3 id="percent" lay-toc="{level: 2}">显示进度值</h3>
<pre class="layui-code" lay-options="{preview: true, previewStyle: 'padding-top: 24px;', layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-progress" lay-showpercent="true">
<div class="layui-progress-bar" lay-percent="30%"></div>
</div>
<hr class="ws-space-16">
<div class="layui-progress" lay-showpercent="true">
<div class="layui-progress-bar" lay-percent="5 / 10"></div>
</div>
<hr class="ws-space-16">
<div class="layui-progress layui-progress-big" lay-showpercent="true">
<div class="layui-progress-bar" lay-percent="70%"></div>
</div>
<!-- import layui -->
</textarea>
</pre>
<h2 id="api" lay-toc="{}">API</h2>
| API | 描述 |
| --- | --- |
| var element = layui.element | 获得 `element` 模块。 |
| [element.render(\'progress\', filter)](#render) | 进度条 `progress` 组件渲染。 |
| [element.progress(filter, percent)](#progress) | 设置进度值 |
<h3 id="render" lay-toc="{level: 2}">渲染</h3>
`element.render('progress', filter);`
- 参数 `'progress'` : 渲染进度条的固定值
- 参数 `filter` : 对应进度条容器 `lay-filter` 的属性值
在元素加载完毕后element 模块会自动对元素进行一次渲染。而当元素为动态插入时,需通过该方法完成初始化渲染。
```
<div id="test"></div>
<!-- import layui -->
<script>
layui.use(function(){
var element = layui.element;
var $ = layui.$;
// 动态插入进度条元素
$('#test').html(`
<div class="layui-progress" lay-filter="demo-filter-progress">
<div class="layui-progress-bar" lay-percent="30%"></div>
</div>
`);
// 渲染进度条组件
element.render('progress', 'demo-filter-progress');
});
</script>
```
<h3 id="attr" lay-toc="{level: 2}">属性</h3>
| 属性 | 描述 |
| --- | --- |
| lay-percent | 用于设置进度条的值,进度条内层容器属性。支持 *百分比**分数* 形式。用法详见:[#示例](#examples) |
| lay-showpercent | 是否显示进度值,进度条外层容器属性,默认不显示。用法详见:[#示例](#showpercent) |
<h3 id="progress" lay-toc="{level: 2, hot: true}">设置进度值</h3>
`element.progress(filter, percent);`
- 参数 `filter` : 对应进度条容器 `lay-filter` 的属性值
- 参数 `'percent'` : 进度条的值
该方法用于动态改变进度条的值。示例:
<pre class="layui-code" lay-options="{preview: true, previewStyle: 'padding-top: 24px;', layout: ['preview', 'code'], tools: ['full'], done: function(obj){
obj.render();
}}">
<textarea>
<div class="layui-progress layui-progress-big" lay-showPercent="true" lay-filter="demo-filter-progress">
<div class="layui-progress-bar" lay-percent="0%"></div>
</div>
<hr class="ws-space-16">
<div class="layui-btn-container">
<button class="layui-btn" lay-on="setPercent">设置 50%</button>
<button class="layui-btn" lay-on="loading">模拟 loading</button>
</div>
<!-- import layui -->
<script>
layui.use(function(){
var element = layui.element;
var util = layui.util;
// 普通事件
util.on('lay-on', {
// 设置进度值
setPercent: function(){
element.progress('demo-filter-progress', '50%'); // 设置 50% 的进度
},
// 模拟 loading
loading: function(othis){
var DISABLED = 'layui-btn-disabled';
if(othis.hasClass(DISABLED)) return;
var n = 0;
var timer = setInterval(function(){
n = n + Math.random()*10|0;
if(n>100){
n = 100;
clearInterval(timer);
othis.removeClass(DISABLED);
}
element.progress('demo-filter-progress', n+'%');
}, 300+Math.random()*1000);
othis.addClass(DISABLED);
}
});
});
</script>
</textarea>
</pre>