美文网首页Web 前端开发
JQuery UI - Progressbar Widget

JQuery UI - Progressbar Widget

作者: ghwaphon | 来源:发表于2016-09-23 17:07 被阅读199次

默认使用效果

demo01.png
<div id="progressbar"></div>

HTML 代码中我们只是简单的定义了一个div,和之前介绍的方法一样,我们也是简单的调用一个 progressbar() 方法即可 显示出图片中的效果。

<script>
    $(document).ready(function () {
        $("#progressbar").progressbar({
            value: 50
        });
    })
</script>

这里,我们将进度条的值设置成了50,当然这个值可以随意指定。现在我们看到的还是一个静态的效果,显然是不能满足我们的,一个静态的进度条对我们而言毫无意义,下面就来看看动态的效果该如何实现。

动态加载

demo02.gif

可见,这个效果还是很有利用价值的,下面我们就看看是怎么做到的。

<div id="progressbar">
    <div id="progressbar-label"></div>
</div>

在这里,我们又嵌套了一个 div 标签,用于摆放加载时进度的变化。下面我们需要书写 CSS 样式,将 progressbar-label 中的值放到进度条当中去。

<style>
    #progressbar {
        width: 320px;
        position: relative;
    }

    #progressbar-label {
        position: absolute;
        top: 6px;
        left: 48%;
    }
</style>

我们将 left 属性设置成了 48%,并没有设置成居中,因为我们还有一个文字宽度,如果设置成 50%,就显得靠右了。其实,我也不知道怎么可以将这个文字设置成居中,我尝试了好几个属性,但是都失败了。如果有人知道,请在下方留言教教我,万分感谢。

<script>
    $(document).ready(function () {
        var progressbar = $("#progressbar");
        var progressbarLabel = $("#progressbar-label");

        progressbar.progressbar({
            value: false,
            change: function () {
                progressbarLabel.text(progressbar.progressbar("value") + "%");
            },
            complete: function () {
                progressbarLabel.text("100%");
            }
        })

        function progress() {
            var value = progressbar.progressbar("value") || 0;
            progressbar.progressbar("value", value + 2);

            if (value < 99) {
                setTimeout(progress, 100);
            }
        }

        setTimeout(progress, 1000);
    })
</script>

1.将 progressbarvalue 设置成 false,这么设置有什么效果呢?看上面的图片,在刚开始的时候一个动态的波浪效果,这么设置就是让这个效果出现。

2.在 progress() 方法中我们使用了一个递归调用,也就是每隔 0.1s 调用一下自身方法,进行更新 progressbar 的值。在方法的外面,我们将延迟时间设置成了 1s , 主要是为了将刚开始加载的动态效果显示的更明显一些。

弹出框下载效果

demo03.gif
<div id="dialog" title="下载">
    <div id="progressbar-label">正在加载</div>
    <div id="progressbar"></div>
</div>

<button type="button" id="openBtn">打开</button>

关于 html 代码我们就不再对其进行讲解,直接跳过,去看 JS 代码。

<script>
    $(document).ready(function () {
        var dialog = $("#dialog");
        var progressbar = $("#progressbar");
        var progressLabel = $("#progressbar-label");
        var progressTimer;
        dialogButtons = [{
            text: "取消下载",
            click: closeDownload
        }];

        dialog.dialog({
            autoOpen: false,
            modal: true,
            resizable: false,
            buttons: dialogButtons
        });

        $("#openBtn").button().on("click", function () {
            dialog.dialog("open");
            setTimeout(progress, 2000);
        })

        progressbar.progressbar({
            value: false,
            change: function () {
                progressLabel.text("正在下载 : " + progressbar.progressbar("value") + "%");
            },
            complete: function () {
                progressLabel.text("下载完成");
                dialog.dialog("option", "buttons", [{
                    text: "关闭",
                    click: closeDownload
                }]);
            }

        })

        function progress() {
            var value = progressbar.progressbar("value") || 0;
            progressbar.progressbar("value", value + 2);
            if (value <= 99) {
                progressTimer = setTimeout(progress, 30);
            }
        }

        function closeDownload() {
            clearTimeout(progressTimer);
            dialog.dialog("close");
            progressbar.progressbar("value", false);
            progressLabel.text("正在加载");
        }


    })
</script>

1.一开始,我们声明了几个变量,接下来我们就可以通过变量对页面标签进行操作。

2.以上效果其实就是 DialogProgressbar 的使用,大多数属性在以上我们都已经介绍过了,下面我们针对逻辑进行讲解。首先,将弹出框设置成 关闭状态,对 openBtn 绑定点击事件,当点击触发的时候,将弹出框打开,并且此时开始启动 setTimeout()方法,开始让 Progressbar 进行加载,至于在其他地方我们对 ProgressLabel 文字的修改和对Dialog 按钮文字的修改,我们就不再进行讲解。

注意到,我们上面的Progressbar 的颜色不再是默认的灰色了,这是怎么修改的呢?这个属性我们可以在 CSS 中就行修改。

<style>
    #progressbar-label {
        margin-bottom: 20px;
        font-weight: bold;
    }

    .ui-dialog-titlebar-close {
        display: none;
    }

    #progressbar .ui-progressbar-value{
        background-color: aquamarine;
    }
</style>

1.第一处是对 ProgressLabel 进行位置和字体设定。

2.第二处是将弹出框右上角的关闭按钮进行隐藏。

3.第三处就是将Progressbar 的背景颜色进行改变,我们可以将其改编成任意值。

相关文章

网友评论

    本文标题:JQuery UI - Progressbar Widget

    本文链接:https://www.haomeiwen.com/subject/oaazettx.html