javascript+css实现进度条效果

下面是实现进度条效果的攻略:

1.基本原理

进度条通常是在页面的顶部或底部显示的,用来展示某个任务的完成进度。实现进度条的基本原理是,通过JavaScript控制元素的宽度达到动画效果。然后结合CSS使进度条更美观。

2. 实现步骤

2.1 HTML结构

首先需要在HTML中添加进度条的结构,通常情况下进度条是一个<div>元素,同时为了更好地控制进度条的样式,通常还需要添加一个父元素。

<div class="progress-bar-container">
  <div class="progress-bar"></div>
</div>

2.2 CSS样式

接着添加进度条的CSS样式,主要包括进度条的长度、背景颜色、进度条的颜色等。

.progress-bar-container {
  width: 100%;
  height: 20px;
  background-color: #eaeaea;
}

.progress-bar {
  height: 100%;
  background-color: #3498db;
  width: 0%;
  transition: width .5s ease-in-out;
}

2.3 JavaScript

然后是JavaScript的部分,它具体实现了进度条的动画效果。通常情况下,通过一定逻辑控制进度条达到动画效果,可以用定时器实现。

// 获取进度条元素
const progressBar = document.querySelector('.progress-bar');
// 获取父容器元素
const progressContainer = document.querySelector('.progress-bar-container');

let progress = 0;
let intervalId = null;

// 进度条动画
function startProgressAnimation() {
  intervalId = setInterval(() => {
    progress++;
    progressBar.style.width = `${progress}%`;

    // 判断是否达到最大值
    if (progress >= 100) {
      clearInterval(intervalId);
    }
  }, 30);
}

// 触发动画
startProgressAnimation();

在上面的代码中,我们首先获取了进度条和父容器的元素,然后通过设置定时器来控制进度条的宽度变化,并且在达到100%时清除定时器,停止进度条的动画。

2.4 示例:

下面是两个示例来演示如何实现进度条效果。

示例一:单次进度条

例如一个网页在加载的时候,需要显示进度条。下面的示例展示了如何实现这个功能。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Single progress bar</title>
  <style>
    .progress-bar-container {
      width: 100%;
      height: 20px;
      background-color: #eaeaea;
    }
    .progress-bar {
      height: 100%;
      background-color: #3498db;
      width: 0%;
      transition: width .5s ease-in-out;
    }
  </style>
</head>
<body>

  <div class="progress-bar-container">
    <div class="progress-bar"></div>
  </div>

  <script>
    // 获取进度条元素
    const progressBar = document.querySelector('.progress-bar');
    // 获取父容器元素
    const progressContainer = document.querySelector('.progress-bar-container');

    let progress = 0;
    let intervalId = null;

    // 进度条动画
    function startProgressAnimation() {
      intervalId = setInterval(() => {
        progress++;
        progressBar.style.width = `${progress}%`;

        // 判断是否达到最大值
        if (progress >= 100) {
          clearInterval(intervalId);
        }
      }, 30);
    }

    // 触发动画
    startProgressAnimation();
  </script>
</body>
</html>

示例二:多次进度条

下面这个示例是一个简单的上传文件进度条,一次性上传多个文件时,需要分别显示各个文件的上传进度。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Multiple progress bars</title>
  <style>
    .file-upload {
      background-color: #eaeaea;
      height: 30px;
      line-height: 30px;
      margin-bottom: 10px;
    }
    .file-upload .progress-bar {
      height: 100%;
      background-color: #3498db;
      width: 0%;
      transition: width .5s ease-in-out;
    }
  </style>
</head>
<body>

  <div class="file-upload">
    File 1: 
    <div class="progress-bar"></div>
  </div>
  <div class="file-upload">
    File 2: 
    <div class="progress-bar"></div>
  </div>
  <div class="file-upload">
    File 3: 
    <div class="progress-bar"></div>
  </div>

  <script>
    // 获取进度条元素
    const progressBar1 = document.querySelector('.file-upload:nth-child(1) .progress-bar');
    const progressBar2 = document.querySelector('.file-upload:nth-child(2) .progress-bar');
    const progressBar3 = document.querySelector('.file-upload:nth-child(3) .progress-bar');

    let progress1 = 0;
    let progress2 = 0;
    let progress3 = 0;
    let intervalId1 = null;
    let intervalId2 = null;
    let intervalId3 = null;

    // 进度条动画
    function startProgressAnimation1() {
      intervalId1 = setInterval(() => {
        progress1++;
        progressBar1.style.width = `${progress1}%`;

        // 判断是否达到最大值
        if (progress1 >= 100) {
          clearInterval(intervalId1);
        }
      }, 30);
    }
    function startProgressAnimation2() {
      intervalId2 = setInterval(() => {
        progress2++;
        progressBar2.style.width = `${progress2}%`;

        // 判断是否达到最大值
        if (progress2 >= 100) {
          clearInterval(intervalId2);
        }
      }, 30);
    }
    function startProgressAnimation3() {
      intervalId3 = setInterval(() => {
        progress3++;
        progressBar3.style.width = `${progress3}%`;

        // 判断是否达到最大值
        if (progress3 >= 100) {
          clearInterval(intervalId3);
        }
      }, 30);
    }

    // 触发动画
    startProgressAnimation1();
    startProgressAnimation2();
    startProgressAnimation3();
  </script>
</body>
</html>

在上面的代码中,我添加了一个父容器,同时在其中添加多个子元素,每个子元素都是一个文件上传项,包括文件名和上传进度条。通过JavaScript分别控制各个文件的上传进度条。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript+css实现进度条效果 - Python技术站

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

相关文章

  • JavaScript装饰器函数(Decorator)实例详解

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

    JavaScript 2023年5月27日
    00
  • JavaScript的concat方法实例代码(数组连接)

    JavaScript的concat方法实例代码(数组连接) JavaScript中的concat方法用于连接两个或多个数组,并返回一个新的数组。该方法不会改变原始数组,而是创建一个新的数组。 语法 array.concat(array1, array2, …, arrayX) 其中, array1, array2, …, arrayX 是要连接的数组…

    JavaScript 2023年5月27日
    00
  • javascript打开word文档的方法

    要使用Javascript打开Word文档,需要借助ActiveX对象。以下是一个简单的代码示例。 首先,在HTML页面中添加一个按钮,详见以下HTML代码片段: <button onclick="openWordDoc()">打开Word文档</button> 接下来,在Javascript中添加以下代码: fu…

    JavaScript 2023年5月27日
    00
  • 在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)

    让我们一步步来实现在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div,不改变iframe父窗口代码。 首先,我们需要在iframe里的页面编写js,并且通过iframe的parent对象进行与父窗口的交互。以下是大致的步骤: 在iframe页面中编写HTML代码和JS代码,创建一个可以进行展开和收缩的div,并设置好div的初始状态…

    JavaScript 2023年6月11日
    00
  • JavaScript通过HTML的class来获取HTML元素的方法总结

    当我们想要在JavaScript中获取HTML元素时,可以通过元素的类名(class)来获取。以下是通过HTML元素的类名来获取HTML元素的方法总结: 1. 通过document.getElementsByClassName()方法获取HTML元素 我们可以使用 document.getElementsByClassName() 方法通过元素的类名来获取H…

    JavaScript 2023年6月11日
    00
  • jQuery Animation实现CSS3动画示例介绍

    jQuery Animation实现CSS3动画示例介绍 介绍 jQuery是一个广泛使用的JavaScript库,可以简化HTML文档遍历、事件处理、动画设计等步骤。CSS3也提供了丰富的动画效果,但CSS3并不支持像JavaScript一样的条件判断和循环控制,这就限制了CSS3的灵活性。因此,jQuery动画实现了一些CSS3动画的效果,并且为它们添加…

    JavaScript 2023年6月10日
    00
  • 详解JavaScript的while循环的使用

    详解JavaScript的while循环的使用 简介 JavaScript 中提供了循环语句来重复执行代码块,其中 while 循环是其中之一。while 循环是基于条件执行的循环,只要给定条件为真,就会执行循环体,直到给定条件为假。 语法 while 循环的语法如下: while (condition) { // 循环体语句 } 其中 condition …

    JavaScript 2023年5月27日
    00
  • Js+Ajax,Get和Post在使用上的区别小结

    当我们使用 JavaScript 和 Ajax 发送请求到服务器时,我们通常会使用 GET 和 POST 方法。虽然它们都用于发送 HTTP 请求,但它们在实现和用法上是不同的。以下是它们之间的区别: GET 方法 GET 方法是一种在查询字符串中传递参数的 HTTP 请求方法,它通过 URL 发送数据到服务器。这意味着通过 GET 发送的请求,请求的数据可…

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