类似 Google、Youtube、Medium 的进度条,源自 NProgress。
调用 start()
、 done()
控制进度条。
$.AMUI.progress.start();
$.AMUI.progress.done();
<button id="np-s" class="am-btn am-btn-primary">$.AMUI.progress.start();</button>
<button id="np-d" class="am-btn am-btn-success">$.AMUI.progress.done();</button>
$(function(){
var progress = $.AMUI.progress;
$('#np-s').on('click', function() {
progress.start();
});
$('#np-d').on('click', function() {
progress.done();
});
});
如果使用 Turbolinks 1.3.0+ 或者类似的库,可以在自定义事件回调中调用 Progress。
$(document).on('page:fetch', function() { $.AMUI.progress.start(); });
$(document).on('page:change', function() { $.AMUI.progress.done(); });
$(document).on('page:restore', function() { $.AMUI.progress.remove(); });
在 Ajax 应用中添加进度条,绑定到 Zepto(jQuery) ajaxStart
和 ajaxStop
事件中。
没有使用 Turbolinks/Pjax 也可以添加高大上的进度条,绑定到 $(document).ready
和 $(window).load
即可。
设置百分比: 调用 .set(n)
可以设置进度百分比, n 的取值区间为 0..1
。
$.AMUI.progress.set(0.0); // Sorta same as .start()
$.AMUI.progress.set(0.4);
$.AMUI.progress.set(1.0); // Sorta same as .done()
增加进度: 调用 .inc()
,进度将会增加一个随机的数量,但不会到达 100%。
$.AMUI.progress.inc();
也可以给 .inc()
传递一个数值参数:
$.AMUI.progress.inc(0.2); // This will get the current status value and adds 0.2 until status is 0.994
.inc()
方法会获取当前进度值并增加 0.2,但最多只到达 0.994。
强制结束: 传递 true
给 done()
,强制显示进度条(默认情况是如果没有 .start(),.done() 执行任何操作)。
$.AMUI.progress.done(true);
获取进度值: 使用 .status
属性。
<button id="np-set" class="am-btn am-btn-primary">$.AMUI.progress.set(0.4);</button>
<button id="np-inc" class="am-btn am-btn-warning">$.AMUI.progress.inc();</button>
<button id="np-fd" class="am-btn am-btn-success">$.AMUI.progress.done(true);</button>
<button id="np-status" class="am-btn am-btn-danger">$.AMUI.progress.status;</button>
$(function(){
var progress = $.AMUI.progress;
$('#np-set').on('click', function() {
progress.set(0.4);
});
$('#np-inc').on('click', function() {
progress.inc();
});
$('#np-fd').on('click', function() {
progress.done(true);
});
$('#np-status').on('click', function() {
$(this).text('Status: ' + progress.status);
});
});
{
minimum: 0.08,
easing: 'ease',
positionUsing: '',
speed: 200,
trickle: true,
trickleRate: 0.02,
trickleSpeed: 800,
showSpinner: true,
barSelector: '[role="nprogress-bar"]',
spinnerSelector: '[role="nprogress-spinner"]',
parent: 'body',
template: '<div class="nprogress-bar" role="nprogress-bar">' +
'<div class="nprogress-peg"></div></div>' +
'<div class="nprogress-spinner" role="nprogress-spinner">' +
'<div class="nprogress-spinner-icon"></div></div>'
}
minimum
: 设置最小百分比。
$.AMUI.progress.configure({ minimum: 0.1 });
template
: 设置模板,注意相应更改 barSelector
、spinnerSelector
。
$.AMUI.progress.configure({
template: "<div class='....'>...</div>"
});
ease
、speed
: 设置动画缓动函数和速度(ms
)
$.AMUI.progress.configure({ ease: 'ease', speed: 500 });
trickle
、trickleRate
、trickleSpeed
:
$.AMUI.progress.configure({ trickle: false });
$.AMUI.progress.configure({ trickleRate: 0.02, trickleSpeed: 800 });
showSpinner
:
NProgress.configure({ showSpinner: false });
parent
:
设置插入进度条的父容器,默认为 body
。
$.AMUI.progress.configure({ parent: '#container' });
通过更改 css 改变进度条样式,对应的样式为 less
目录下面的 ui.progress.less
。