JS实现动态倒计时功能(天数、时、分、秒)

实现动态倒计时功能是Web开发中常见的需求之一,JS是实现这一功能的重要工具之一。下面我会为你详细讲解如何使用JS实现动态倒计时,并提供两个详细的示例说明。

编写HTML结构

首先需要在HTML页面中添加需要倒计时的元素,可以使用HTML5中的<time>元素来显示时间。在这个例子中,我们将需要倒计时的元素放在<div>标签中。

<div id="countdown">
  <time datetime="2022-01-01T00:00:00"></time>
</div>

JS实现倒计时功能

接下来是JS实现倒计时功能的关键代码。通过使用setInterval()函数每隔一段时间更新时间,然后根据时间计算出天数、小时、分钟和秒数,最后将结果显示在页面上。

// 获取需要倒计时的时间
const countdownDate = new Date("2022-01-01T00:00:00").getTime();

// 更新倒计时的函数
const updateCountdown = () => {
  // 获取当前时间
  const now = new Date().getTime();

  // 计算时间差
  const difference = countdownDate - now;

  // 计算天数、小时、分钟和秒数
  const days = Math.floor(difference / (1000 * 60 * 60 * 24));
  const hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  const minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
  const seconds = Math.floor((difference % (1000 * 60)) / 1000);

  // 更新HTML页面
  const countdownElement = document.querySelector("#countdown time");
  countdownElement.innerHTML = `${days} 天 ${hours} 时 ${minutes} 分 ${seconds} 秒`;
};

// 每隔1秒更新倒计时
setInterval(updateCountdown, 1000);

示例一

现在,我们将使用这个倒计时函数来实现一个简单的倒计时页面。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>倒计时页面</title>
</head>
<body>
  <div id="countdown">
    <time datetime="2022-01-01T00:00:00"></time>
  </div>
  <script>
    const countdownDate = new Date("2022-01-01T00:00:00").getTime();

    const updateCountdown = () => {
      const now = new Date().getTime();
      const difference = countdownDate - now;
      const days = Math.floor(difference / (1000 * 60 * 60 * 24));
      const hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
      const minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
      const seconds = Math.floor((difference % (1000 * 60)) / 1000);
      const countdownElement = document.querySelector("#countdown time");
      countdownElement.innerHTML = `${days} 天 ${hours} 时 ${minutes} 分 ${seconds} 秒`;
    };

    setInterval(updateCountdown, 1000);
  </script>
</body>
</html>

这样就可以得到一个简单的页面,显示距离指定日期的倒计时。

示例二

接下来,我们将使用这个倒计时函数来实现一个更复杂的倒计时页面。这个页面可以让用户自定义目标日期,并显示倒计时的时间。同时,还可以使用动画效果来让页面更加生动。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>动态倒计时页面</title>
  <style>
    .countdown-wrapper {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 100vh;
      background-color: #333;
      color: #fff;
      font-size: 3rem;
      text-shadow: 1px 1px 2px #000000;
    }

    .counter {
      display: flex;
      justify-content: center;
      align-items: center;
      width: 75%;
      height: 75%;
      background-color: rgba(255, 255, 255, 0.8);
      border-radius: 50%;
      box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
    }

    .countdown-element {
      flex: 1;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      font-weight: bold;
      font-size: 6rem;
      text-shadow: 1px 1px 1px #000000;
    }

    .countdown-label {
      font-size: 1.5rem;
      text-transform: uppercase;
    }

    .separator {
      font-size: 6rem;
    }

    .countdown-element + .separator {
      flex-basis: 5%;
      text-align: center;
    }

    .countdown-element:first-child + .separator {
      display: none;
    }

    .counter.active {
      animation: flash 1s infinite;
    }

    @keyframes flash {
      from, 25%, 50%, 75%, to {
        transform: scale(1);
      }
      10%, 30%, 70%, 90% {
        transform: scale(1.1);
      }
      40%, 60% {
        transform: scale(1.2);
      }
      80% {
        transform: scale(0.9);
      }
    }
  </style>
</head>
<body>
  <div class="countdown-wrapper">
    <div class="counter">
      <div class="countdown-element days">
        <span class="countdown-time">0</span>
        <span class="countdown-label">Days</span>
      </div>
      <div class="separator">:</div>
      <div class="countdown-element hours">
        <span class="countdown-time">0</span>
        <span class="countdown-label">Hours</span>
      </div>
      <div class="separator">:</div>
      <div class="countdown-element minutes">
        <span class="countdown-time">0</span>
        <span class="countdown-label">Minutes</span>
      </div>
      <div class="separator">:</div>
      <div class="countdown-element seconds">
        <span class="countdown-time">0</span>
        <span class="countdown-label">Seconds</span>
      </div>
    </div>
  </div>
  <script>
    const countdownElements = document.querySelectorAll(".countdown-element");
    const countdownTimes = document.querySelectorAll(".countdown-time");
    const separatorElements = document.querySelectorAll(".separator");
    const counter = document.querySelector(".counter");

    const updateCountdown = () => {
      const targetDate = new Date(document.getElementById("targetDate").value);
      const now = new Date();
      const difference = targetDate - now;
      const days = Math.floor(difference / (1000 * 60 * 60 * 24));
      const hours = Math.floor((difference % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
      const minutes = Math.floor((difference % (1000 * 60 * 60)) / (1000 * 60));
      const seconds = Math.floor((difference % (1000 * 60)) / 1000);
      countdownTimes[0].innerHTML = days < 10 ? "0" + days : days;
      countdownTimes[1].innerHTML = hours < 10 ? "0" + hours : hours;
      countdownTimes[2].innerHTML = minutes < 10 ? "0" + minutes : minutes;
      countdownTimes[3].innerHTML = seconds < 10 ? "0" + seconds : seconds;
    };

    const flashCounter = () => {
      counter.classList.add("active");
      setTimeout(() => {
        counter.classList.remove("active")
      }, 1000);
    };

    setInterval(() => {
      updateCountdown();
      flashCounter();
    }, 1000);
  </script>
</body>
</html>

这样,我们就得到了一个外观非常华丽的动态倒计时页面。用户可以使用页面上的输入框来输入目标日期,并自动开始倒计时。同时,还添加了闪烁的动画效果来吸引用户的注意力。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现动态倒计时功能(天数、时、分、秒) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 详解JavaScript原型与原型链

    详解JavaScript原型与原型链 前置知识 在深入讲解JavaScript原型与原型链之前,需要了解以下概念: 对象 构造函数 实例 继承 原型 JavaScript中有一个对象,称为原型对象(prototype object),它指向一个JavaScript对象。每个JavaScript对象都有一个原型对象。 在对象定义时,可以通过Object.cre…

    JavaScript 2023年6月10日
    00
  • javascript学习笔记(四)function函数部分

    下面是JavaScript学习笔记(四)Function函数部分的完整攻略。 一、函数的定义 JavaScript中的函数使用function关键字来定义,函数中的代码块可以在任何时间被调用多次。函数可以带着参数来进行运算,也可以返回值(有时不返回值,而是引起副作用)。 1. 基本语法 function functionName(parameters){ /…

    JavaScript 2023年5月27日
    00
  • 谈谈JavaScript中的函数与闭包

    JavaScript中的函数与闭包 函数 在JavaScript中,函数是一种可以进行重复使用的代码块。使用函数可以封装代码,使之变得更加易于维护和复用。在JavaScript中,函数有以下几个特点: 函数是一等公民,可以像其他对象一样被传递、存储和操作。 函数可以在定义时不指定参数,或者在调用时传递任意数量的参数。 函数可以有返回值,也可以在执行结束时不返…

    JavaScript 2023年5月27日
    00
  • Javascript array类 数组操作方法

    JavaScript 的 Array 类是经常被使用的一种数据类型,用于存储有序且可变长度的数据。为了更好的操作数组,JavaScript 提供了丰富的数组操作 API,包含创建、增加、删除、遍历和排序等方法。本文将介绍 JavaScript 的 Array 类的常用操作方法及其使用方法,内容如下: 创建数组 语法 new Array(); // 空数组 n…

    JavaScript 2023年6月10日
    00
  • JavaScript中获取HTML元素值的三种方法

    当我们在编写 JavaScript 代码时,常常需要获取 HTML 元素的值。下面介绍三种常见的方法来获取 HTML 元素的值。 1. 使用 document.getElementById() 方法 document.getElementById() 方法是用来获取指定 id 的元素的,然后我们可以使用 value 属性获取元素的值。示例代码如下: // H…

    JavaScript 2023年6月10日
    00
  • 详解Three.js 场景中如何彻底删除模型和性能优化

    针对“详解Three.js场景中如何彻底删除模型和性能优化”的完整攻略,以下是详细的讲解。 第一部分:如何彻底删除模型 在Three.js场景中,我们创建了许多的对象,例如模型、灯光、相机等。如果某些模型不再需要使用了,就应该将这些模型从场景中彻底删除,以释放内存并提高性能 1.1 单个模型的删除 要删除单个模型,需要使用以下代码: scene.remove…

    JavaScript 2023年6月10日
    00
  • 分享JavaScript 类型判断的几种方法

    我们来详细讲解一下“分享JavaScript 类型判断的几种方法”的完整攻略。 一、背景介绍 在JavaScript中,进行类型判断是一项非常重要和常用的操作。类型判断可以让我们更好的对变量进行操作和处理,避免出现意想不到的错误。本文将介绍JavaScript中常用的几种类型判断方法。 二、typeof方法 typeof方法可以返回一个值的类型。 typeo…

    JavaScript 2023年5月18日
    00
  • JSP对URL链接中的中文乱码处理方法总结

    下面我将为您详细讲解“JSP对URL链接中的中文乱码处理方法总结”的完整攻略。 一、问题背景 在JSP中,当我们需要传递中文参数时,URL链接中的中文会出现乱码。这是因为URL中只支持ASCII码,而中文字符不属于ASCII码范围内。因此需要对中文参数进行编码处理,以保证URL链接能够正确传递中文参数。 二、解决方案 1、使用URLEncoder/URLDe…

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