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实现刮刮乐”的攻略,我们可以按照以下步骤进行。 1. 准备工作 首先,我们需要在HTML文件中创建一个canvas元素,用于绘制刮去涂层后的图片。示例代码如下: <canvas id="scratch-card"></canvas> 接下来,我们需要准备两张图片。一张作为底部图片,一张…

    JavaScript 2023年6月10日
    00
  • JavaScript进阶之前端文件上传和下载示例详解

    JavaScript进阶之前端文件上传和下载示例详解 本文将详细讲解前端文件上传和下载的过程和实现方法,包括如何使用HTML5 FormData API、AJAX和原生JavaScript来完成文件上传和下载功能的开发。 文件上传 文件上传是我们日常开发中常用的功能之一。下面我们通过两个示例来讲解文件上传的实现。 示例1:上传图片并预览 HTML部分 &lt…

    JavaScript 2023年5月27日
    00
  • html5 canvas js(数字时钟)实例代码

    下面是“HTML5 Canvas JS(数字时钟)实例代码”的完整攻略。 前置知识 在学习 HTML5 Canvas JS 时,需要具备 HTML 和 JavaScript 的基础知识。 步骤 步骤1:创建 HTML 文件 首先,创建一个 HTML 文件,并添加一个 canvas 标签以显示数字时钟。代码如下: <!DOCTYPE html> &…

    JavaScript 2023年5月27日
    00
  • javascript模拟php函数in_array

    下面我来详细讲解下使用 JavaScript 模拟 PHP 函数 in_array 的完整攻略。 1. in_array 函数简介 in_array 是 PHP 中一个非常常用的函数,它用于在数组中搜索指定的值,如果找到了该值则返回 true,否则返回 false。JavaScript 中没有 in_array 函数,但你可以通过自己定义一个函数来完成该功能…

    JavaScript 2023年5月27日
    00
  • js关闭浏览器窗口及检查浏览器关闭事件

    要实现JavaScript关闭浏览器窗口以及检查浏览器关闭事件,可以使用window.close()方法和window.onbeforeunload事件。 使用window.close()方法关闭浏览器窗口 使用window.close()方法可以轻易地关闭当前窗口或打开的窗口。但要注意,在现代浏览器中,该方法只能关闭由JavaScript打开的窗口,不能关…

    JavaScript 2023年6月11日
    00
  • JavaScript实现给定时间相加天数的方法

    接下来我将为你详细讲解“JavaScript实现给定时间相加天数的方法”的完整攻略。 问题描述 在实际开发中,我们常常需要对日期进行加减操作。比如,给定一个日期和一个整数days,要求计算出days天之后的日期是多少。本篇文章主要介绍JavaScript实现给定时间相加天数的方法。 解决方案 JavaScript日期对象提供了一些实用的方法,可以方便地处理日…

    JavaScript 2023年5月27日
    00
  • javascript 冒号 使用说明

    下面是关于 JavaScript 冒号的使用说明: 什么是冒号 在 JavaScript 中,冒号(:)在对象字面量中用来分隔属性名和属性值,在 ES6 中则有更多的使用方式。下面我们来逐一讲解。 对象字面量 在对象字面量中,冒号用来分隔属性名和属性值。举个例子: const person = { name: ‘Tom’, age: 18 } 在这个例子中,…

    JavaScript 2023年6月11日
    00
  • js对url进行编码解码的三种方式总结

    下面是关于“js对url进行编码解码的三种方式总结”的详细解释。 1. URL编码 URL编码是将 URL 中非 ASCII 字符的字符转换成 “%” 加上两位十六进制值,即 URL 编码。 在JavaScript中,可以使用 encodeURIComponent() 方法实现 URL 编码。该方法可以将 URL 中所有需要转换的字符都进行转换。 下面是一个…

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