返回顶部
首页 > 资讯 > 精选 >JavaScript怎么实现可动的canvas环形进度条
  • 371
分享到

JavaScript怎么实现可动的canvas环形进度条

2023-06-29 03:06:42 371人浏览 薄情痞子
摘要

这篇文章主要介绍“javascript怎么实现可动的canvas环形进度条”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript怎么实现可动的canvas环形进度条”文章能帮助大家解决问

这篇文章主要介绍“javascript怎么实现可动的canvas环形进度条”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript怎么实现可动的canvas环形进度条”文章能帮助大家解决问题。

介绍

今天分享一个环形进度条的写法,当然这只是一个可动的静态进度条,如果你喜欢可以加入后台数据。这种进度条非常简单的写法到处都有,只不过更多的只是写个样子,咱们这个可以动哟。

JavaScript怎么实现可动的canvas环形进度条

前提是canvas的属性、方法和一些基础的js api你都知道,当然为了保证一些忘记的小伙伴一下想起来,我会在前面列个表。

属性和方法描述
getContext()返回一个用于在画布上绘图的环境
strokeStyle画笔(绘制图形)颜色或者样式的属性
lineWidth设置线段厚度的属性
save()保存canvas全部状态的方法(入栈)
beginPath()创建一个新的路径的方法
arc(原点x,原点y,半径,起始角度,结束角度,默认false顺时针)绘制圆弧路径的方法
stroke()绘制路径的方法
closePath()闭合绘制路径
restore()恢复到最近的保存状态的方法(出栈)
fillStyle颜色和样式的属性
font当前字体样式的属性
toFixed(num)把Number四舍五入为指定小数位数的数字

回顾完上表开始绘制图形,图形的绘制除了canvas元素之外还有以下几个部分,我先分开把代码按部分写出:

JavaScript怎么实现可动的canvas环形进度条

1.创建canvas元素

先创建一个canvas的标签给出宽高,绘制环形进度宽高一致就可以,之后获取元素,并创建画布。注意canvas元素这里起名mycanvas,绘制的画布对象叫ctx。

<canvas id="mycanvas" width="200" height="200"></canvas>//以下为js代码var mycanvas = document.getElementById('mycanvas');var ctx = mycanvas.getContext('2d');

2.绘制的准备工作

绘制之前需要做一些准备工作

  • 找到“画布的中心点”的,进度条

  • 将进度条按照进度的比例分成100份,按照100%完成

  • 指定初始加载步长(长度),注意这是初始化后期可以改成0

//找到画布的中心点var canvasX = mycanvas.width / 2;var canvasY = mycanvas.height / 2;//进度条是100%,所以要把一圈360度分成100份var progress = Math.PI * 2 / 100;//指定初始加载步长var steps = 0.5;

3.绘制环形底层

先把进度的环形底层浅灰色的环绘制出来,它是进度的路径。可以先把绘制的颜色和线宽指定好,这两个属性对下面的方法顺序起不到影响。

ctx.strokeStyle = '#DDDddd';ctx.lineWidth = 20;ctx.save();ctx.beginPath();ctx.arc(canvasX, canvasY, 90, 0, Math.PI * 2, false)ctx.stroke();ctx.closePath();ctx.restore();

4.绘制进度层

进度层绘制的颜色需要定义出来,另外进度条的粗细与底层环形的粗细相同。这里最重要的一句是,在结束角度的时候加入了“steps progress” 步长 进度。steps 数值越小乘成数之后增加的角度就少,steps数值大乘数之后进度增加的就多。

ctx.strokeStyle = "#47cab0";ctx.lineWidth = 20;ctx.save();ctx.beginPath();ctx.arc(canvasX,canvasY,90, -Math.PI/2, -Math.PI/2+steps*progress,false);ctx.stroke();ctx.closePath();ctx.restore();

5.绘制字体并指定位置

环形的进度百分比文字显示需要使用canvas的文字绘制,这里需要注意数字是从1位到3位的跨度,还要加入%,因此位置需要变化。当数字到100时文字占宽就更大因此要改变绘制起点。

ctx.fillStyle = "#000000"; //可改ctx.font = "bold 26px Arial"; //可改ctx.save();// canvasX-30, canvasY+10  中的加减的数值可改if (steps.toFixed(0).length == 3) {   ctx.fillText(steps.toFixed(0) + '%', canvasX - 30, canvasY + 10);} else {   ctx.fillText(steps.toFixed(0) + '%', canvasX - 20, canvasY + 10);}ctx.restore();

JavaScript怎么实现可动的canvas环形进度条

写到这里静态的一个进度就会出现,但是我们还需要让他动起来,大家可能想到的定时器。但我们却使用了另一种编写循环动画的方法。

6.进度动画

显示器的刷新频率通常是50~60hz,1000ms/60&asymp;16.6ms,相当于每秒钟重绘60次,大多数浏览器都不会超过显示器的重绘频率。之前的文章我们曾经提到过setTimeout()和setInterval()这两种循环其实并不那么精准智能,即使使用setTimeout()以自调的方式模拟循环定时器,也不能确保处理线程可以按照理想之行。

window.requestAnimationFrame()

window.requestAnimationFrame() 告诉浏览器&mdash;&mdash;你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行。 回调函数执行次数通常是每秒60次,但在大多数遵循W3C建议的浏览器中,回调函数执行次数通常与浏览器屏幕刷新次数相匹配。为了提高性能和电池寿命,因此在大多数浏览器里,当requestAnimationFrame() 运行在后台标签页或者隐藏的 <iframe> 里时,requestAnimationFrame() 会被暂停调用以提升性能和电池寿命。

因此为了保证平滑渲染,我们使用,window.requestAnimationFrame(),在该方法的参数一个回调函数中做几件事:

判断完成整个环形步长的结束值,如:100,其实就是走到100%的位置,75就是走到75%的位置

在选择的步长范围内调用增长的函数

window.requestAnimationFrame(function () {//判断步子最终走多远的边界值,此值可以改  if (steps < 90) {  //该函数在边界内可以调用函数,增加步长并且绘制图形给这个函数起个名字  }})

因为有函数的自调用,所以我们把这部分写在一起,不拆分写了。难度就在此处!

要先做,把之前所有的绘制图形代码放入新创建的函数DrawShape中,并且需要接收两个参数。一个是要绘制的对象,因为一个页面上不止一个画布对象。第二个参数就是每次会改变的步长。

//绘制形状函数,传入画布对象和每次都会改变的步长function DrawShape(ctx,steps) {//画圆      画底层圆形的代码...//画进度环      画进度条的代码...//绘制字体并指定位置      绘制字体的代码...}

创建animate函数用来执:平滑动画、行步长的增加、绘制图形三件重要事宜。

//初始调用动画函数animate();//动画函数function animate() {//执行平滑动画window.requestAnimationFrame(function () {//判断步子最终走多远的边界值,此值可以改if (steps < 90) {//该函数在边界内可以调用       animate();    } });//清空绘制内容 ctx.clearRect(0, 0, mycanvas.width, mycanvas.height);//每次增加的步长,数值越大步子越大跑的越快,数值越小走的越慢 steps += 0.5;//可改//调用绘制形状函数,传入参数绘制对象,环形进度步长 DrawShape(ctx,steps);};

关于“JavaScript怎么实现可动的canvas环形进度条”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: JavaScript怎么实现可动的canvas环形进度条

本文链接: https://lsjlt.com/news/322139.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript实现可动的canvas环形进度条
    目录介绍1.创建canvas元素2.绘制的准备工作3.绘制环形底层4.绘制进度层5.绘制字体并指定位置6.进度动画介绍 今天分享一个环形进度条的写法,当然这只是一个可动的静态进度条,...
    99+
    2024-04-02
  • JavaScript怎么实现可动的canvas环形进度条
    这篇文章主要介绍“JavaScript怎么实现可动的canvas环形进度条”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript怎么实现可动的canvas环形进度条”文章能帮助大家解决问...
    99+
    2023-06-29
  • 详解JavaScript+Canvas绘制环形进度条
    目录效果图思考实现思路具体代码实现效果图 思考 移动端的场景里经常会出现环形进度条的功能,在实现这个功能前,我预想的解决方案大致有: echarts、antv、canvas、svg...
    99+
    2024-04-02
  • 如何利用canvas实现环形进度条
    这篇文章给大家分享的是有关如何利用canvas实现环形进度条的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前提:有时候在项目中会有用到进度条的情况,使用css3也可以实现,但是对于性能不好的设备,或者网络不好的情...
    99+
    2023-06-09
  • canvas如何实现有递增动画的环形进度条
    这篇文章将为大家详细讲解有关canvas如何实现有递增动画的环形进度条,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果如下:高清大图! 码农多年,老眼昏花,动图看不清?!那就看静态截图!!!不...
    99+
    2023-06-09
  • JavaScript canvas绘制动态圆环进度条
    本文实例为大家分享了JavaScript canvas绘制动态圆环进度条的具体代码,供大家参考,具体内容如下 由于使用的是vue开发,所以就展示一下绘制函数好了,上图是效果图 dr...
    99+
    2024-04-02
  • css怎么实现环形循环进度条
    本教程操作环境:Windows10系统、CSS3版、DELL G3电脑css怎么实现环形循环进度条?CSS实现圆环进度条一、静态进度条首先,我们先看一个静态进度条第一步当然是先实现一个最外层的父级圆环。其次是通过 clip-path画出两个...
    99+
    2023-05-14
    进度条 css
  • 使用canvas怎么实现一个圆形进度条动画
    这期内容当中小编将会给大家带来有关使用canvas怎么实现一个圆形进度条动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. canvas的HTML部分很简单就一个canvas标签canvas画布的宽高...
    99+
    2023-06-09
  • Android实现环形进度条的实例
    Android实现环形进度条的效果图如下: 自定义控件:AttendanceProgressBar 代码如下: public class AttendanceProgres...
    99+
    2022-06-06
    进度条 Android
  • Android实现环形进度条代码
    本文参考借鉴://www.jb51.net/article/102983.htm 先上效果图: 自定义控件:AttendanceProgressBar 代码如下: pub...
    99+
    2022-06-06
    进度条 Android
  • JavaScriptcanvas实现环形渐变进度条
    最近有个需求要做环形渐变色进度条,去网上找了半天没找到合适的,大多数渐变色都是径向渐变,所以自己用canvas写了个环形渐变的图: 这个渐变其实就是把圆环分成许多小块分别绘制的,所...
    99+
    2024-04-02
  • css如何实现环形循环进度条
    本篇内容主要讲解“css如何实现环形循环进度条”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css如何实现环形循环进度条”吧!css实现环形循环进度条的方法:1、创建一个最外层的父级圆环;2、通...
    99+
    2023-07-05
  • JavaScript实现圆形进度条效果
    本文实例为大家分享了JavaScript实现圆形进度条效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"...
    99+
    2024-04-02
  • JavaScript实现可拖拽的进度条
    本文实例为大家分享了JavaScript实现可拖拽的进度条的具体代码,供大家参考,具体内容如下 一.进度条实现 <html> <head> <m...
    99+
    2024-04-02
  • 微信小程序怎么实现环形进度条
    本篇内容主要讲解“微信小程序怎么实现环形进度条”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序怎么实现环形进度条”吧!index.wxss.circle { &nbs...
    99+
    2023-07-02
  • 微信小程序用canvas实现圆形进度条
    本文实例为大家分享了微信小程序用canvas实现圆形进度条的具体代码,供大家参考,具体内容如下 先放效果图,如下: 1. wxml文件代码如下 对于圆形进度条中间的文字,如果是简单...
    99+
    2024-04-02
  • android圆形进度条怎么实现
    要实现一个圆形进度条,你可以使用`ProgressBar`控件来实现,并将其样式设置为圆形。首先,在布局文件中添加以下代码:```x...
    99+
    2023-08-30
    android
  • java圆形进度条怎么实现
    以下是一个简单的Java圆形进度条的实现代码:import java.awt.Color;import java.awt.Dimen...
    99+
    2023-05-13
    java圆形进度条 java
  • MFC圆形进度条怎么实现
    MFC(Microsoft Foundation Class)是用于开发Windows应用程序的一套类库。要实现MFC圆形进度条,可...
    99+
    2023-08-20
    MFC
  • 自定义视图view怎么实现环形进度条
    这篇文章主要介绍“自定义视图view怎么实现环形进度条”,在日常操作中,相信很多人在自定义视图view怎么实现环形进度条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”自定义视图view怎么实现环形进度条”的疑...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作