javascript+css实现进度条效果

yizhihongxing

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

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日

相关文章

  • js将当前时间格式化为 年-月-日 时:分:秒的实现代码

    这里就来介绍将JavaScript中的时间格式化为指定格式的方法。 获取当前时间 获取当前时间最常用的是 JavaScript 自带的 Date 对象,可以通过 new Date() 创建一个实例。创建之后,我们就可以使用 Date 对象中的方法来获取当前时间了。 let now = new Date() // 获取当前时间,保存在一个 Date 实例中 格…

    JavaScript 2023年5月27日
    00
  • JS异常处理的一个想法(sofish)

    下面是详细的文本攻略。 简介 JS异常处理的一个想法,是由前端开发者sofish提出的一种异常处理方案。这种方案能够减少代码中try-catch的使用,减少代码冗余,提高代码的可读性。 原理 这种方案的核心思想是使用事件代理,对于代码中可能出现的异常情况,可以在全局统一进行处理。事件代理通过监听window对象下的错误事件,可以捕获到应用中的所有异常。 实现…

    JavaScript 2023年5月28日
    00
  • 在DWR中实现直接获取一个JAVA类的返回值的两种方法

    在DWR中实现直接获取一个Java类的返回值,通常有两种方法: 方法一:使用DWR的@RemoteProxy注解 编写需要获取返回值的Java类,使用@RemoteProxy注解标识这个类为DWR可用的Remote Service。 “`java@RemoteProxypublic class HelloWorld { public String sayH…

    JavaScript 2023年5月28日
    00
  • 原生JS实现文件上传

    下面是“原生JS实现文件上传”的详细攻略: 1. HTML结构 在HTML文件中添加一个表单,包含一个文件输入和一个提交按钮。 <form enctype="multipart/form-data"> <input type="file" name="fileInput" id=&…

    JavaScript 2023年5月27日
    00
  • JavaScript及jquey实现多个数组的合并操作

    首先,需要明确一点,JavaScript中合并多个数组可以通过Array.concat()方法来完成,例如: let arr1 = [1, 2, 3]; let arr2 = [4, 5, 6]; let arr3 = [7, 8, 9]; let mergedArray = arr1.concat(arr2, arr3); console.log(merg…

    JavaScript 2023年5月27日
    00
  • JavaScript判断文件是否存在的实例代码

    下面是详细讲解 JavaScript 判断文件是否存在的完整攻略。 问题描述 有时我们需要在 JavaScript 中判断某个文件是否存在,这在处理文件上传、下载等场景中很常见。那么如何用 JavaScript 判断文件是否存在呢?我们分别从前端和后端两个方面进行说明。 前端方案 前端方案是通过发送 HTTP 请求,并监听响应状态码来判断文件是否存在。 下面…

    JavaScript 2023年5月27日
    00
  • jsonp跨域获取数据的基础教程

    关于”JSONP跨域获取数据的基础教程”,以下是一份完整攻略。 什么是JSONP跨域获取数据? 当浏览器通过 AJAX 访问另一个域下的资源时,就会遇到跨域问题。JSONP 跨域获取数据是一种跨域解决方案,它利用了 html 页面可以跨域引用 js 脚本文件的特性,从而绕过了跨域限制。 JSONP 跨域获取数据的基本思路 JSONP 跨域获取数据的基本思路是…

    JavaScript 2023年5月27日
    00
  • 使用flow来规范javascript的变量类型

    使用Flow工具可以在JavaScript中对变量的类型进行规范与检测,从而减少类型相关的错误,提高程序的可靠性和可维护性。以下是使用Flow来规范JavaScript的变量类型的详细攻略: 安装和配置Flow 安装Flow: npm install -g flow-bin 在项目的根目录下创建一个.flowconfig文件 在.flowconfig文件中添…

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