JS实现环形进度条(从0到100%)效果

JS实现环形进度条(从0到100%)效果

简介

环形进度条是一种常用的进度展示方式,它以环形的形式展示出进度的百分比。在这个攻略中,我们将通过JS实现一个从0到100%的环形进度条,并提供两个示例说明。

实现

HTML结构

首先,我们需要在HTML中创建一个div元素,该元素包含两个子元素,用于实现环形进度条的效果。

<div class="progress-ring">
  <div class="progress-circle"></div>
  <div class="percent"></div>
</div>

其中,.progress-ring代表环形进度条的外部容器,.progress-circle代表进度条的圆圈,.percent代表进度百分比的文本。

CSS样式

接下来,我们需要为进度条添加样式,使其展示出环形效果。

.progress-ring {
  position: relative;
  width: 150px;
  height: 150px;
  margin: 50px auto;
}

.progress-circle {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 10px solid #eee;
  border-radius: 50%;
}

.progress-circle:before {
  content: "";
  display: block;
  margin: 0 auto;
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 0 10px 10px 10px;
  border-color: transparent transparent #3498db transparent;
  transform-origin: center bottom;
  animation: progress 2s ease-out forwards;
}

.percent {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 24px;
  font-weight: bold;
}

@keyframes progress {
  from {
    transform: rotate(-90deg);
  }
  to {
    transform: rotate(calc(360 * var(--percent) / 100 - 90deg));
  }
}

其中,.progress-ring代表环形进度条的外部容器,.progress-circle代表进度条的圆圈,.percent代表进度百分比的文本。使用CSS实现了圆形、进度条颜色等效果。

JS实现

最后,我们需要通过JS来实现进度条的动态效果。我们为进度条设置了data-percent属性,通过修改该属性的值,可以动态改变进度条的百分比。

<div class="progress-ring" data-percent="0">
  <div class="progress-circle"></div>
  <div class="percent"></div>
</div>

并在JS中编写代码:

let percent = 0;
setInterval(() => {
  percent += 5;
  if (percent > 100) percent = 0;
  document.querySelector('.progress-ring').dataset.percent = percent;
  document.querySelector('.percent').innerText = percent + '%';
}, 1000);

以上代码会每秒钟将percent值加5,并修改HTML中.progress-ring元素的data-percent属性和.percent元素的innerText值,从而实现动态的进度条效果。

示例

示例一

在这个示例中,我们通过JS动态改变进度条的百分比,并将进度条和进度百分比展示在页面中。

<div class="progress-ring" data-percent="0">
  <div class="progress-circle"></div>
  <div class="percent"></div>
</div>

<script>
let percent = 0;
setInterval(() => {
  percent += 5;
  if (percent > 100) percent = 0;
  document.querySelector('.progress-ring').dataset.percent = percent;
  document.querySelector('.percent').innerText = percent + '%';
}, 1000);
</script>

示例二

在这个示例中,我们使用了第三方库CountUp.js,来实现数字由0到100的动态效果。

<script src="https://cdn.jsdelivr.net/npm/countup.js"></script>

<div class="progress-ring" data-percent="0">
  <div class="progress-circle"></div>
  <div class="percent"></div>
</div>

<script>
let percent = 0;
let countUp = new CountUp('.percent', percent + 1, {
  startVal: 0,
  duration: 2,
  useEasing: true,
  useGrouping: true,
  separator: ',',
  decimal: '.',
});
setInterval(() => {
  percent += 1;
  if (percent > 100) percent = 0;
  document.querySelector('.progress-ring').dataset.percent = percent;
  countUp.update(percent + 1);
}, 2000);
</script>

通过CountUp.js库提供的API,我们可以实现数字由0到100的动态效果,同时配合上面所提到的JS实现,实现整体效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现环形进度条(从0到100%)效果 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 小米公司JavaScript面试题

    下面是小米公司JavaScript面试题的完整攻略。 题目描述 小米公司的JavaScript面试题是一道字符串处理题目,其具体描述为: 给定一个只包含单个字母的字符串,如“aaaaabbbbbccdddeee”,将此字符串中重复出现超过两次的字符压缩为“重复的字符+次数”的形式,如“a5b5ccddde3”,最后输出压缩后的字符串。 解题思路 针对这个字符…

    JavaScript 2023年5月28日
    00
  • JavaScript装饰器函数(Decorator)实例详解

    JavaScript装饰器函数(Decorator)实例详解 理解装饰器 JavaScript装饰器是ES2016的新提案之一,它是一个函数,可以被用于修改类的行为。 一个装饰器可以被认为是一个具有固定签名(接受不同数量和类型的参数)的函数,它的第一个参数是被装饰的函数或类。 装饰器主要有两种应用:- 类装饰器: 用于修改类的定义- 方法装饰器: 用于修改类…

    JavaScript 2023年5月27日
    00
  • JavaScript生成二维码图片小结

    使用JavaScript生成二维码图片可以方便地分享一些跨平台内容,比如网址、联系方式、文本等等。下面是一个详细的攻略: 安装qrcode库 在使用JavaScript生成二维码图片之前,我们需要先安装相应的库。这里我们使用qrcode库,它可以非常方便地生成二维码图片。在命令行中输入以下命令进行安装: npm install qrcode –save 导…

    JavaScript 2023年6月10日
    00
  • JavaScript Array对象使用方法解析

    JavaScript Array对象使用方法解析 概述 JavaScript中的Array对象是一个非常重要的数据结构类型,可以用来存储相同类型的数据,并且可以通过封装在Array对象上的各种方法,方便地进行增、删、改、查等操作。本文将详细地解析JavaScript Array对象的使用方法,包括数组的创建、增删元素、遍历、排序、查找等操作。 数组的创建 方…

    JavaScript 2023年5月27日
    00
  • 通用javascript代码判断版本号是否在版本范围之间

    如何判断一个版本号是否在指定的版本范围之间,这是许多JavaScript开发人员必须掌握的技能。这里将提供一个完整的攻略来帮助你轻松做到这一点: 步骤一:检查当前版本号 首先,你需要检查当前应用程序的版本号。这可以通过navigator对象的userAgent属性来实现。以下是一个JavaScript代码示例: var userAgent = navigat…

    JavaScript 2023年6月11日
    00
  • 了解JavaScript中的选择器

    了解JavaScript中的选择器 在JavaScript中,选择器是非常重要的概念之一,它其实就是一种语法,可以帮助我们从HTML文档中选择出需要操作的元素。以下是本攻略的主要内容。 基础选择器 通过id选择元素 我们可以通过简单的 getElementById() 方法选择文档中的元素,只需使用元素的id标识作为参数即可。 示例代码: let myEle…

    JavaScript 2023年5月18日
    00
  • js设置默认时间跨度过程详解

    JavaScript 设置默认时间跨度过程详解 在编写网站或应用程序时,常常需要对一些时间进行处理。如果存在时间跨度选择功能,通常也需要为其提供默认时间跨度。下面将讲解如何使用 JavaScript 设置默认时间跨度。 一、获取当前时间 在设置默认时间跨度之前,我们需要先获取当前时间。可以使用 JavaScript 中的Date对象来获取。 const no…

    JavaScript 2023年5月27日
    00
  • 原生JS+HTML5实现的可调节写字板功能示例

    下面是我对于“原生JS + HTML5 实现的可调节写字板功能示例”的攻略详解,包括过程和示例说明: 1. 准备工作 首先,我们需要明确一下目标:实现一个可调节写字板的功能。为此,我们需要对写字板功能的实现进行详细的分析,并列出需要用到的相关技术和工具。 1.1 写字板需求分析 写字板的基本要求是:用户可以在一个空白画布上自由绘画,还可以设置画笔的颜色及粗细…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部