HTML5简单进度条插件

今天学习了HTML5画线条,于是有了做一个简单进度条的插件的想法

先来一个实例

下面是html代码

    <div>
        <canvas id="canvas"></canvas>
    </div>

然后js配置参数

 var setting = {
            id: "canvas",//画布id 不可省略
            width: 40,//进度条高度 可省略
            time: 100,//进度刷新时间间隔 可省略 默认为1000毫秒
            color: "black",//进度条颜色 可省略 默认为bule
            runX2: function (x) {//每次刷新调用的改变X2坐标的函数,可省略 runX1,runY1,runY2一样
                x = x + 2;
                return x;
            },
            endFunction: function () {//结束时调用的函数
            },
            startFunction: function () {//结束时调用的函数
            }
        }

然后

 initProgressBar(setting);

就行了 当然,最开始要引入自定义进度条的js

 <script type="text/javascript" src="progressBar.js"></script>

就这样 一个简单的HTML5 canvas实现的进度条就实现了

我们先来说下API ,API很简单,只有几个参数,一般来说 只需要一个ID和一个变化函数就可以实现一个简单的进度条

id 画布的id

width:进度条的高度,也可以叫宽度 默认10

time:刷新时间,也就是说每隔多久执行一次函数 默认1000毫秒

color:进度条的颜色 默认red

lineCap:样式 和HTML5的lineCap样式一样 默认round

runX2:每次刷新调用的变化函数,每次刷新调用的改变X2坐标的函数,可省略 runX1,runY1,runY2一样 共有两个坐标x1,y1,x2,y2

startFunction:开始之前调用的函数

endFunction:结束之后调用的函数

是不是很简单?那我们现在来看下插件实现的源码,也很简单,不过100行。运用js的setInterval实现定时刷新。

function initProgressBar(setting) {
    var initProgressBar = {};
    //调用开始函数
    if (setting.startFunction) {
        setting.startFunction();
    }
    //初始化默认值函数
    initProgressBar.initSet = function (set) {
        if (!set.time) {
            set.time = 1000;
        }
        if (!set.width) {
            set.width = 10;
        }
        if (!set.color) {
            set.color = "red";
        }
        if (!set.lineCap) {
            set.lineCap = "round";
        }
        return set;
    }
    //初始化默认值
    setting = initProgressBar.initSet(setting);
    //刷新函数
    initProgressBar.remainTime = function () {
        if (setting.runX1) {
            x1 = setting.runX1(x1);
            if (x1 >= endW) {
                x1 = endW;
            }
        }
        if (setting.runY1) {
            y1 = setting.runY1(y1);
            if (y1 >= endH) {
                y1 = endH;
            }
        }
        if (setting.runX2) {
            x2 = setting.runX2(x2);
            if (x2 >= endW) {
                x2 = endW;
            }
        }
        if (setting.runY2) {
            y2 = setting.runY2(y2);
            if (y2 >= endH) {
                y2 = endH;
            }

        }
        initProgressBar.draw(x1, y1, x2, y2, setting.width, setting.lineCap, setting.color);
        //判断结束
        if (y2 >= endH || y1 >= endH || x1 >= endW || x2 >= endW) {
            clearInterval(initProgressBar.run);
            if (setting.endFunction) {
                setting.endFunction();//调用结束函数
            }
        }
    }
    //初始化画布,调用刷新函数
    if (setting.id) {
        initProgressBar.canvas = document.getElementById(setting.id);
        console.log(setting.id);
        initProgressBar.context = initProgressBar.canvas.getContext("2d");
        initProgressBar.run = setInterval(initProgressBar.remainTime, setting.time);//1000为1秒钟
    } else {
        alert("初始化错误,没有id");
    }
    var x1 = setting.width / 2;//起始点的坐标x
    var y1 = setting.width / 2;//起始点的坐标y
    var x2 = setting.width / 2;//结束点的坐标x
    var y2 = setting.width / 2;//结束点的坐标y
    var endH = initProgressBar.canvas.height - setting.width;
    var endW = initProgressBar.canvas.width - setting.width;

    //画进度条
    initProgressBar.draw = function draw(x1, y1, x2, y2, width, lineCap, color) {
        //清除内容
        initProgressBar.context.clearRect(0, 0, canvas.width, canvas.height);
        initProgressBar.context.beginPath();
        initProgressBar.context.strokeStyle = color;
        initProgressBar.context.lineCap = lineCap;
        initProgressBar.context.moveTo(x1, y1);
        initProgressBar.context.lineWidth = width;
        initProgressBar.context.lineTo(x2, y2);
        initProgressBar.context.stroke();
    }
}

就这样,一个自定义小插件就完成了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 04:27:41

HTML5简单进度条插件的相关文章

jQuery简单实用的轻量级进度条插件

jQMeter是一款简单实用的轻量级进度条jQuery插件,它可以显示为水平或垂直进度条,进度条加载时带有动画特效,你只需要简单的传入一些参数到jQMeter对象的构造函数中就可以完成你想要的进度条效果. 该进度条插件的构造函数中允许你定义进度条的宽度.高度.背景色.进度条颜色等等参数,通过这些参数你可以构造自己的进度条样式. 效果演示:http://www.htmleaf.com/Demo/201504131672.html 下载地址:http://www.htmleaf.com/jQuery

Html5添加SVG的轻量级jQuery进度条插件教程

一.使用方法 使用该jQuery进度条插件需要引入jQuery和jquery.progress.js文件. <script src="js/jquery.min.js"></script> <script src="js/jquery.progress.js"></script> 二.Html结构 该jQuery进度条的HTML结构使用一个<svg>元素来制作. <svg id="conta

HTML5圆形百分比进度条插件circleChart(记录)

介绍:一款可以描绘圆圈进度条的jQuery插件(可用作统计图) circleChart使用方法 在页面中引入jquery和circleChart.min.js文件. <script src="path/to/jquery.min.js"></script> <script src="path/to/circleChart.min.js"></script> HTML结构 使用一个<div>元素作为该圆形百分

简单的jquery进度条插件LineProgressbar.js

参考   http://www.lanrenzhijia.com/jquery/4121.html demo下载 <script src="js/jquery.lineProgressbar.js" type="text/javascript"></script> $(function(){ $('#progressbar1').LineProgressbar({ percentage: 50 }); $('#progressbar2').L

9款极具创意的HTML5/CSS3进度条动画(免积分下载)

尊重原创,原文地址:http://www.cnblogs.com/html5tricks/p/3622918.html 免积分打包下载地址:http://download.csdn.net/detail/yangwei19680827/7352505 今天我们要分享9款极具创意的HTML5/CSS3进度条动画,这些进度条也许可以帮你增强用户交互和提高用户体验,喜欢的朋友就收藏了吧. 1.HTML5/CSS3图片加载进度条 可切换多主题 今天要分享的这款HTML5/CSS3进度条模拟了真实的图片加

一个Notification 进度条插件(android,NJS实现,直接就可使用)

参考文章:http://ask.dcloud.net.cn/article/503 源码地址下载 如题,分享一个Notification 进度条插件(android,用js调用原生api实现,直接就可以使用).参考1: http://ask.dcloud.net.cn/article/155参考2:http://ask.dcloud.net.cn/question/2464 详细介绍: 最近有一个需求是,android更新资源包时,需要在通知栏里显示下载进度条,于是就搜索了下已有的解决方案发现并

jQuery实现简单进度条效果

一个用jQuery实现的简单进度条,当加载页面时,屏幕顶部出现一条极细的小线条,加载页面时会显示加载进度. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>jquery实现的简单进度条效果</title> 6 <style> 7 #web_loading{ 8 z-inde

Jquery进度条插件 Progress Bar插件应用方法

搞的我小纠结了一会,最后感谢同事分享文章,得以结局,呵呵,小经验还是要保存的个人使用总结: <script type="text/ 网页特效" src="/Scripts/jquery-1.4.4.min.js"></script> <script type="text/javascript" src="/Scripts/Method/jquery.progressbar.min.js">&

CSS3和js谷歌Material Design进度条插件

mprogress是一款使用纯JS和CSS3制作的谷歌Material Design样式的进度条插件.该插件没有依赖任何外部库.它可以制作4种类型的进度条动画,使用扁平化设计,非常时尚. 该进度条插件有4种类型的动画方式,分别是:确定型.缓冲型.不确定型和查询确定型. mprogress是移动设备优先的js插件,?所有类型的进度条都可以工作在Chrome 和 Firefox浏览器上.Determinate类型的进度条可以工作在所有浏览器上. 在线演示:http://www.htmleaf.com