vant Circle 环形进度条写一个倒计时组件

要点:

  1. css旋转让元素平均分布在圆上
  2. setInterval函数事件
  3. 小圆圈和环形进度条跳动的速度一致
  4. 小程序开发环境

代码:

  1. html
<van-circlevalue="{{ rate }}"stroke-width="6"color="{{ gradientColor }}"size="400rpx"layer-color="#f0fcfe"speed="{{speed}}"><view class="countdown-box"><view class="count-box"><view class="count"> {{ count }}</view><view class="unit"> S </view></view><!-- 小圆圈 计算旋转角度--><viewclass="c-start"style="transform: rotate({{ (360 / sum) * count }}deg)"></view></view></van-circle>
  1. js
Page({/*** 页面的初始数据*/data: {//倒计时总秒数sum: 10,//当前剩余秒数count: 10,// circle进度100%rate: 100,// circle渐变色gradientColor: {"0%": "#75e3f7","100%": "#75e3f7",},//Circle速度,需要根据实际情况调整speed:5000,//定时器timer: null},/*** 生命周期函数--监听页面加载*/onLoad(options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {let timer = setInterval(() => {this.countdownEvent();}, 1 * 1000);this.setData({ timer });},/*** 倒计时*/countdownEvent() {let { count, rate, sum } = this.data;if (count == 0) {//倒计时结束后操作,清除定时器clearInterval(this.data.timer);return;}//当前秒数-1count = count - 1;//计算当前进度条rate = (100 / sum) * count;this.setData({ rate });/*延迟一部分操作到下一个时间片再执行。(类似于 setTimeout),与小圆圈和circle进度条变化速度有关*/wx.nextTick(() => {this.setData({ count });});}
});
  1. css
.countdown-box {/*circle一致*/width: 400rpx;height: 400rpx;display: flex;align-items: center;justify-content: center;flex-direction: column;border-radius: 50%;/*小圆圈的定位*/position: relative;
}
.count-box {
/*倒计时文字对齐*/display: flex;align-items: baseline;justify-content: center;
}
.count {font-family: SourceHanSansCN-Bold;font-size: 138rpx;color: #4e9df2;
}
.unit {font-family: SourceHanSansCN-Regular;font-size: 48rpx;color: #333333;
}
.c-start {/*旋转小圆圈*/width: 40rpx;height: 40rpx;background: linear-gradient(#f9fdfe, #b6eefa, #82e4f7);border-radius: 50%;position: absolute;top: -20rpx;left: 50%;/* left:50% 需要减去小圆圈半径 */margin-left: -20rpx;/* 旋转中心在正中间 214rpx是countdown-box半径加上外圈边框宽度一半 20rpx是因为top:20rpx*/transform-origin: 20rpx 214rpx;box-sizing: border-box;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++11入门手册第一节,学完直接上手Qt(共两节)

入门 hello.cpp #include <iostream>int main() { std::cout << "Hello Quick Reference\n"<<endl; return 0;} 编译运行 $ g hello.cpp -o hello$ ./hello​Hello Quick Reference 变量 int number 5; // 整数float f 0.95; //…

我不懂,到底找个什么样的工作,女朋友才会满意

烫 金三银四&#xff0c;最近要毕业季&#xff0c;感觉也是tm分手季了。。 又要找工作&#xff0c;又要搞毕业的事情&#xff0c;现在又出来个女朋友的事情 我真的要疯求了&#xff0c;我现在是已经找到了一个大厂&#xff0c;但是是白菜价&#xff0c;base北京&#xff0c;…

快排(六大排序)

快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&#xff0c;其基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&#xff0c;右子序列中所…

vue router.js 传值,根据不同type显示不同内容

vue router.js 传值&#xff0c;根据不同type显示不同内容 el-bread 封装 router.js import Vue from vue import Router from vue-router// 路由前缀 const { prefixBasePath } require(../../config/basePath)// 解决重复点击一个路由报错问题 const originalPush Router…

yolov8本地、autodl环境配置、训练

目录 搭建本地环境安装miniconda3创建一个新的环境安装包 安装pycharm下载汉化导入解释器测试终端终端运行代码 YOLOv8本地训练数据集制作训练文件 YOLOv8 autodl训练流程注册账号充值选则服务器jupyterlab创建训练环境上传文件训练使用vscode SSH使用pycharm专业版SSH下载文件…

最大子序列(蓝桥杯,acwing,单调队列)

题目描述&#xff1a; 输入一个长度为 n 的整数序列&#xff0c;从中找出一段长度不超过 m 的连续子序列&#xff0c;使得子序列中所有数的和最大。 注意&#xff1a; 子序列的长度至少是 1。 输入格式&#xff1a; 第一行输入两个整数 n,m。 第二行输入 n 个数&#xff0…

Matlab|电动汽车充放电V2G模型

目录 1 主要内容 1.1 模型背景 1.2 目标函数 1.3 约束条件 2 部分代码 3 效果图 4 下载链接 1 主要内容 本程序主要建立电动汽车充放电V2G模型&#xff0c;采用粒子群算法&#xff0c;在保证电动汽车用户出行需求的前提下&#xff0c;为了使工作区域电动汽车尽可能多的消…

Mojo与Python——wsl安装mojo

文章目录 前言一、wsl设置二、安装步骤三、mojo初体验四、vscode联合开发总结 前言 此课程为系列课程&#xff0c;借助python语言来学习python语言的超集mojo。可以持续关注。 一、wsl设置 powershell查看wsl的版本&#xff0c;如果版本是1需要修改为2。 二、安装步骤 1.安装m…

浅试Kimi

最近KIMI大模型挺火的&#xff0c;擅长处理中文文本&#xff0c;咱也来试试吧&#xff01; 测试问题&#xff1a; 写一篇800字以上的短片小说&#xff1a;主要故事是以一位上进但其他方面表现平平的大男孩小贱&#xff0c;刚到公司不久&#xff0c;就被一位名叫大弟的女同事看…

HarmonyOS 应用开发之多端协同

多端协同流程 多端协同流程如下图所示。 图1 多端协同流程图 约束限制 由于“多端协同任务管理”能力尚未具备&#xff0c;开发者当前只能通过开发系统应用获取设备列表&#xff0c;不支持三方应用接入。 多端协同需遵循 分布式跨设备组件启动规则。 为了获得最佳体验&…

数据分析之Power BI

POWER QUERY 获取清洗 POWER PIVOT建模分析 如何加载power pivot 文件-选项-加载项-com加载项-转到 POWER VIEW 可视呈现 如何加载power view 文件-选项-自定义功能区-不在功能区中的命令-新建组-power view-添加-确定 POWER MAP可视地图

知识图谱与大数据:区别、联系与应用

目录 前言1 知识图谱1.1 定义1.2 特点1.3 应用 2 大数据2.1 定义2.2 应用 3. 区别与联系3.1 区别3.2 联系 结语 前言 在当今信息爆炸的时代&#xff0c;数据成为了我们生活和工作中不可或缺的资源。知识图谱和大数据是两个关键概念&#xff0c;它们在人工智能、数据科学和信息…

保护电路设计 —(2)过温保护

保护电路设计 —&#xff08;2&#xff09;过温保护 上一讲讲到自锁电路设计&#xff0c;但有的同学还不太清楚怎么去复位这个电路&#xff0c;在这里给出一个例子&#xff0c;去复位这个电路。复位电路也非常简单&#xff0c;使用以下电路即可。如图1所示。 图1:复位电路 为…

HarmonyOS 应用开发之UIAbility组件间交互(设备内)

UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时&#xff0c;会涉及到启动特定的UIAbility&#xff0c;该UIAbility可以是应用内的其他UIAbility&#xff0c;也可以是其他应用的UIAbility&#xff08;例如启动三方支付UIAbility&#xff09;。 本文将从如下场景…

深入理解指针(7)函数指针变量及函数数组(文章最后放置本文所有原码)

一、函数指针变量 什么是函数指针变量呢&#xff1f; 既然是指针变量&#xff0c;那么它指向的一定是地址&#xff0c;而且我们可以通过地址来调用函数的。 函数是否有地址呢&#xff1f;地址是什么&#xff1f; 经过上面的测试可以看到函数也是有地址的&#xff0c;而且其地…

每日一练 两数相加问题(leetcode)

原题如下&#xff1a; 这道题目是一道链表题&#xff0c;我们对于这种链表类&#xff0c;很显然我们最后输出的是初始节点&#xff0c;所以我们要保留我们的初始头指针&#xff0c;那么我们的第一步一定是把头指针保留一份&#xff0c;然后再让头指针往后进行操作。那么我们进行…

C#热门技术应用:探索.NET Core与ASP.NET Core的前沿

C#热门技术应用&#xff1a;探索.NET Core与ASP.NET Core的前沿 随着信息技术的发展&#xff0c;C#作为微软开发的一款强大的面向对象编程语言&#xff0c;正在越来越多的领域发挥着关键作用。在.NET Core和ASP.NET Core的推动下&#xff0c;C#的发展和应用更是如日中天。今天&…

go中匿名函数的使用

匿名函数的使用 在Go语言中&#xff0c;不能像在Python那样在函数内部以常规方式定义一个具名函数。Go中的函数定义都必须在包级别进行。 不过可以通过匿名函数来实现类似的功能。匿名函数可以在函数内部定义并使用&#xff0c;这使得它们非常适合实现局部辅助函数的功能&…

基于Axios封装请求---防止接口重复请求解决方案

一、引言 前端接口防止重复请求的实现方案主要基于以下几个原因&#xff1a; 用户体验&#xff1a;重复发送请求可能导致页面长时间无响应或加载缓慢&#xff0c;从而影响用户的体验。特别是在网络不稳定或请求处理时间较长的情况下&#xff0c;这个问题尤为突出。 服务器压力…

android安卓餐厅点餐课设

一、引言 随着移动互联网的快速发展&#xff0c;手机应用已经成为我们日常生活中不可或缺的一部分。餐饮行业也积极借助移动应用的力量&#xff0c;提供更便捷、高效的点餐服务。本文将介绍一个基于安卓系统开发的餐厅点餐APP的课程设计项目&#xff0c;探讨其设计理念、功能特…