js+HTML5 canvas 实现简单的加载条(进度条)功能示例


Posted in Javascript onJuly 16, 2019

本文实例讲述了js+HTML5 canvas 实现简单的加载条(进度条)功能。分享给大家供大家参考,具体如下:

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8">
    <title>3water.com canvas实现加载条动画</title>
  </head>
  <body>
    <canvas id="loadingProgressCanvas"></canvas>
    <script>
      /*
       * 获取canvas, canvas本身没有画图能力,相当于一个画布,提供绘制图形的地方
       * document.getElementsByTagName("canvas")[0]
       * document.querySelector("canvas")/document.querySelector("#loadingProgressCanvas")
       * document.querySelectorAll("canvas")[0]
       */
      var loadingProgressCanvas = document.getElementById("loadingProgressCanvas");
      var ctx = loadingProgressCanvas.getContext("2d"); // 获取绘制图形的对象(画笔)
      drawFirst(); // 绘制初始状态
      var progress = 0; // 定义进度
      drawProgress(); // 绘制初始进度
      // 定义定时器, 100ms钟绘制5%
      var timer = setInterval("drawProgress()", 100);
      // 绘制初始状态
      function drawFirst() {
        ctx.fillStyle="#0000ff"; // 定义画笔颜色, 重新绘制已经加载的进度条
        /*
         * 定义矩形(左上角x/y左边,宽高)
         */
        ctx.rect(0, 0, 200, 30);
        ctx.stroke(); // 绘制定义好的矩形路径
        ctx.fillStyle="#0000ff"; // 定义画笔颜色, 重新绘制已经加载的进度条
      }
      // 绘制进度条
      function drawProgress() {
        if(progress == 200) {
          progress = 0;
          ctx.clearRect(0, 0, 200, 30); // 清楚之前的绘制
        } else {
          ctx.moveTo(progress, 0); // 移动到上一次绘制的终点,准备绘制下一次的进度
          ctx.fillRect(progress, 0, 10, 30); // 200 * 0.05
          progress += 10;
        }
      }
    </script>
  </body>
</html>

运行结果:

js+HTML5 canvas 实现简单的加载条(进度条)功能示例

感兴趣的朋友可使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试一下运行效果。

更多关于JavaScript相关内容还可查看本站专题:《JavaScript+HTML5特效与技巧汇总》、《JavaScript图形绘制技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Prototype Number对象 学习
Jul 19 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
Jun 14 Javascript
jQuery判断复选框是否勾选的原理及示例
May 21 Javascript
浅析Node.js查找字符串功能
Sep 03 Javascript
jquery制作漂亮的弹出层提示消息特效
Dec 23 Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
Oct 10 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
Mar 28 Javascript
Node 搭建一个静态资源服务器的实现
May 20 Javascript
js实现图片3D轮播效果
Sep 21 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
详解JS WebSocket断开原因和心跳机制
May 07 Javascript
微信小程序-API接口安全详解
Jul 16 #Javascript
jquery实现垂直无限轮播的方法分析
Jul 16 #jQuery
JavaScript解析JSON数据示例
Jul 16 #Javascript
微信小程序 Storage更新详解
Jul 16 #Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 #Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
Jul 16 #jQuery
JS实现的排列组合算法示例
Jul 16 #Javascript
You might like
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
浅析PKI加密解密 OpenSSL
2013/07/01 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
PHP正则匹配反斜杠'\'和美元'$'的方法
2017/02/08 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
JSON 数据格式详解
2017/09/13 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
python多线程扫描端口(线程池)
2019/09/04 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
python中random模块详解
2021/03/01 Python
HTML5 预加载让页面得以快速呈现
2013/08/13 HTML / CSS
THE OUTNET英国官网:国际设计师品牌折扣网站
2016/08/14 全球购物
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
《两个铁球同时着地》教学反思
2014/02/13 职场文书
婚前协议书范本两则
2014/10/16 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL