微信小程序圆形进度条倒计时效果

news/2024/7/20 3:46:19 标签: 微信, 小程序, 进度条, 圆环, 倒计时

效果如下图:


var initNum = 7 ; //倒计时
var spaceNum = 1000 ; //文字倒计时间隔
var space = 1000 ; //环倒计时间隔

一、封装canvas画圆环

begin : - ( 1 / 2 * Math .PI ),
pai2 : 2 * Math .PI ,
//canvas画圆环
drawRang : function (precent ) {
var windowWidth = wx .getSystemInfoSync ().windowWidth ;
var poaitionX = wx .getSystemInfoSync ().windowWidth / 2 ;
var cxt_arc = this .cxt_arc ;
cxt_arc .setLineWidth ( 10 );
cxt_arc .setStrokeStyle ( '#ffffff' );
cxt_arc .setLineCap ( 'round' )
cxt_arc .beginPath (); //开始一个新的路径
cxt_arc .arc (poaitionX , 30 , 24 , 0 , this .pai2 , false ); //设置一个原点(106,106),半径为100的圆的路径到当前路径
cxt_arc .stroke (); //对当前路径进行描边
var end = this .pai2 * precent + this .begin ;
if (precent == 0 ){
end = this .pai2 * + this .begin
} else if ( 1 == precent ){
cxt_arc .setFillStyle ( 'white' );
cxt_arc .setFontSize ( 25 );
cxt_arc .fillText ( this .data .countdownNum , poaitionX - 7 , 40 );
cxt_arc .draw ();
return ;
}
cxt_arc .setLineWidth ( 6 );
cxt_arc .setStrokeStyle ( '#F15A47' );
cxt_arc .setLineCap ( 'round' )
cxt_arc .beginPath (); //开始一个新的路径
cxt_arc .arc (poaitionX , 30 , 24 , this .begin , end , true );
cxt_arc .stroke (); //对当前路径进行描边
cxt_arc .setFillStyle ( 'white' );
cxt_arc .setFontSize ( 25 );
cxt_arc .fillText ( this .data .countdownNum , poaitionX - 7 , 40 );
cxt_arc .draw ();
},

二、倒计时

countdown : function () {
var that = this ;
that .rangRun = 0 ;
clearInterval (that .cuntDownCir );
that .cuntDownCir = setInterval ( function () {
var n =initNum - Math .floor (that .rangRun / spaceNum );
var precent = that .rangRun / (initNum * spaceNum );
that .setData ({
countdownNum : n
});
that .drawRang (precent );
that .rangRun = that .rangRun + space ;
if (precent >= 1 ) {
that .data .allowDo = false ;
clearInterval (that .cuntDownCir );
}
}, space );
},

http://www.niftyadmin.cn/n/797892.html

相关文章

微信小程序雷达图

手机上测试效果:主要参考网站: http://blog.csdn.net/lecepin/article/details/60466711 但是有些地方不适用在小程序上,需要修改以下几点 1,函数的修改;比如将ctx.strokeStyle mColorPolygon;修改为ctx.setStrokeSty…

视频播放控制

html部分&#xff1a; <video src"../video/video6.mp4" width"1920" height"1080" autoplay loop preload poster"" id"video"></video> js部分&#xff1a; var myvideo document.getElementById("vide…

优美的移动端菜单特效

模仿大疆官网效果图&#xff1a; 点击前点击后&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style type"text/css"> *{margin: 0rpx;padding: 0rpx;font-family: "Mic…

线性动画

效果&#xff1a; 鼠标经过前&#xff1a;鼠标经过后出现线性动画&#xff1a;html部分&#xff1a; <div class"c-btn c-btn--border-line" id"bbb">鼠标经过查看效果</div> css部分&#xff1a; #bbb{ border: 1px solid #EDEDED; pad…

canvas画圆形图片

效果图&#xff1a;实现环境在微信小程序中 参考网站https://www.jianshu.com/p/9a6ee2648d6f 先封装circleImg&#xff08;&#xff09;方法circleImg: function (ctx, img, x, y, r){ctx.save();var d 2 * r;var cx x r;var cy y r;ctx.beginPath();ctx.arc(cx, cy, r, …

小程序文字变化动画

小程序中要求几处文案一直变化&#xff0c;并在最后固定一个文案&#xff0c;一开始想使用多个setInterval来控制这几处文案&#xff0c;但是发现多线程总是出问题&#xff0c;现在改成了一个线程来控制这几处文案的变化 效果图&#xff1a;wxml文件&#xff1a;<view class…

快速将pc和移动端网站合并成响应式网站

一、使用媒体查询加载不同css文件 <link rel"stylesheet" type"text/css" href"m/css/style.css" media"screen and (max-width:800px)"><!--小于800px时加载移动端样式--><link rel"stylesheet" type"…

代码格式化插件

效果图为&#xff1a;使用了OSChina会员沙王重名了提供的代码实现https://www.oschina.net/code/snippet_119610_11825 html部分&#xff1a; 引入css文件和js文件 <link rel"stylesheet" href"css/s.css" /> <script type"text/javascript&…