PocketLibs(3)—— 进度条 NProgress

依赖jQuery。

import nprogress from 'nprogress'
import 'nprogress/nprogress.css'

$('#btn-loading').on('click', function () {
    nprogress.start()
    setTimeout(() => {
        nprogress.done()
    }, 3000);
})
<div id="app">
    <button class="btn btn-warn" id="btn-loading">load</button>
</div>

PocketLibs(3)—— 进度条 NProgress

nprogress.start()开始加载,nprogress.done()加载完成

挂载目标

nprogress.configure({ parent: '#app' })改变进度条挂载的目标,默认是<body>

nprogress.configure({ parent: '#app' })
$('#btn-loading').on('click', function () {
    nprogress.start()
    setTimeout(() => {
        nprogress.done()
    }, 3000);
})
#app {
    width: 350px;
    border: 1px solid gray;
    padding: 5px;
}

PocketLibs(3)—— 进度条 NProgress

进度条动画增量

nprogress.inc()随机生成一个进度条的增量,nprogress.inc(n)指定一个具体增量,n在0~1之间。
nprogress.set(n)可以指定一个具体值,而非增量,n在0~1之间。

nprogress.configure({ parent: '#app' })
$('#btn-loading').on('click', function () {
    nprogress.start()
    var i = 0;
    //使用inc()
    var timer = setInterval(() => {
        if(nprogress.status){
            $('#inc_counter').text(i++)
            $('#status_counter').text(nprogress.status)
            nprogress.inc()
        }else{
            clearInterval(timer)
        }
    }, 500);
    setTimeout(() => {
        nprogress.done()
    }, 3000);
})
<div id="app">
    <button class="btn btn-warn" id="btn-loading">load</button>
    <!-- 监视inc()调用与进度条状态-->
    <div style="margin-top:5px">
        invoke inc times :
        <span id="inc_counter"></span>
        <br> noprogress status :
        <span id="status_counter"></span>
    </div>
</div>

PocketLibs(3)—— 进度条 NProgress

这里设置了一个定时器,每过0.5秒调用一次inc(),生成随机增量,这里有个问题,如果少了if...else...,会变成如下这个效果。

PocketLibs(3)—— 进度条 NProgress

这是因为,inc()使进度增加超过1时,nprogress.status会变成null,之后又从0重新开始。所以,当nprogress.status为null时,我们停止调用inc()

如果设置一个指定增量,不会有以上问题。

改变颜色

如果要改变默认颜色,就要在nprogress.css文件中修改。
我复制一份nprogress.css,然后在拷贝中修改颜色,再引用这份拷贝。

// import 'nprogress/nprogress.css'
import './nprogress.scss'

//......
/*nprogress.scss*/
$color:#FF5983;

/*原先颜色都替换成$color*/
/* ... */

PocketLibs(3)—— 进度条 NProgress

其他

这些配置都是在NProgress.configure(options)中的options中配置

showSpinner:true/false 是否显示螺旋加载(就是右上角那个圈圈)
trickle:默认情况就是不使用inc()也会有默认增量,这个选项决定是否关闭这个默认增量
trickleSpeed: 默认情况下进度条增加的速度
minimum:进度条初始值
easingspeed:进度条增加时有个动画效果,这两个选项设置动画的贝塞尔曲线及其增加速度,如:

nprogress.configure({ easing: 'cubic-bezier', speed: 200 })

PocketLibs(3)—— 进度条 NProgress

template: 这个进度是被包在一个以下这个role='bar'这个div中的,我们可以通过这个选项重写这个div,以彻底改变默认的内部构造。暂时用不到。

PocketLibs(3)—— 进度条 NProgress

app

相关推荐