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

yizhihongxing

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日

相关文章

  • JS身份证信息验证正则表达式

    下面是JS身份证信息验证正则表达式的完整攻略: 什么是身份证号码 身份证号码是我国公民的唯一身份标识,由18位数字和字母组成,其中最后一位可能是数字或字母X,具有以下含义: 前6位是地址码,表示身份证持有人的行政区划代码; 7到14位是出生日期码,表示身份证持有人的出生年月日; 15到17位称为顺序码,表示在同一地址码区域内,对同年、同月、同日出生的人员编定…

    JavaScript 2023年5月19日
    00
  • 简化版的vue-router实现思路详解

    简化版的vue-router实现思路详解 前言 Vue.js 是一个非常流行的前端框架,其专注于视图层的渲染。而 Vue-router 是 Vue.js 的一个关键插件,它管理着 Vue.js 应用程序中的路由,可以帮助我们更好地管理前端路由。在本篇文章中,我将为大家介绍一个简化版的 Vue-router 实现思路。 设计思路 Vue-router 的设计思…

    JavaScript 2023年6月11日
    00
  • javascript闭包入门示例

    当我们在 JavaScript 中使用函数时,往往会遇到闭包的概念。那么什么是闭包呢?简单来说,闭包就是一个可以访问自由变量的函数。这个自由变量指的是函数内部定义的变量,在函数外也可以访问。下面我们通过两个示例来深入理解 JavaScript 闭包的概念和用法。 示例 1:基础闭包示例 function outerFunction() { var outer…

    JavaScript 2023年6月10日
    00
  • javascript基础练习之翻转字符串与回文

    以下是对“javascript基础练习之翻转字符串与回文”的完整攻略: 1. 翻转字符串 1.1 题目描述 输入一个字符串,将其翻转后输出。 1.2 解题思路 字符串的翻转可以有多种方式,以下介绍两种。 1.2.1 利用split()和reverse()方法 首先使用split()方法将字符串以空格为分割符转换为数组; 然后使用reverse()方法将数组中…

    JavaScript 2023年5月28日
    00
  • 总结javascript中的六种迭代器

    下面是对 JavaScript 中的六种迭代器的详细讲解。 什么是迭代器 在开始讲解迭代器之前,先来了解一下什么是迭代器。迭代器是一种设计模式,用于遍历任何类型的数据。简单来说,迭代器就是一个对象,该对象允许在一次运行中获取序列中的各个元素。 JavaScript 中的六种迭代器 JavaScript 提供了内置的六种迭代器,分别为: forEach() m…

    JavaScript 2023年5月27日
    00
  • JavaScript中的事件与异常捕获详析

    JavaScript中的事件与异常捕获详析 什么是事件? 事件,是指在JavaScript中,用户操作某些元素(如点击按钮、滚动页面等)所触发的一系列事件处理。JavaScript提供了丰富多样的事件类型,例如点击事件、鼠标滚轮事件、键盘事件等。 如何给元素绑定事件? 可以调用元素的addEventListener方法来为其绑定事件。例如给按钮绑定点击事件:…

    JavaScript 2023年5月27日
    00
  • JavaScript中的闭包介绍

    一、什么是闭包 闭包是指能够访问其它函数内部变量的函数。在 JavaScript 中,函数是一等公民,即函数可以作为对象传递,也可以作为返回值返回。在函数中定义的变量也可以作为闭包的一部分,因此,当一个函数返回另一个函数时,闭包就会形成。 闭包的主要特点是可以访问外部函数作用域内的变量,即使外部函数已经返回了,这些变量的值也可以被访问和修改,因为这些变量仍然…

    JavaScript 2023年6月10日
    00
  • javascript实现json页面分页实例代码

    首先讲解一下如何使用JavaScript实现JSON数据的页面分页。 一、前置知识 在使用JavaScript实现JSON分页前,需要先掌握一些前置知识: AJAX:用于实现异步的数据传输。 JSON:JavaScript Object Notation,一种轻量级的数据交互格式。 二、代码实现 1. 引入jQuery库 在实际应用中,我们常常使用jQuer…

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