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

yizhihongxing

实现动态倒计时功能是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日

相关文章

  • 微信小程序结合mock.js实现后台模拟及调试

    下面是“微信小程序结合mock.js实现后台模拟及调试”的完整攻略,包含以下几个步骤: 1.安装mock.js 在小程序目录下,使用npm安装mock.js: npm install mockjs –save-dev 2.创建mock数据文件 在小程序目录下,创建一个mock文件夹,然后在mock文件夹下创建一个mock.js文件,在该文件中编写mock数…

    JavaScript 2023年6月11日
    00
  • javascript数据类型详解

    JavaScript数据类型详解 JavaScript是一种弱类型的编程语言,因此在进行变量赋值、函数传参等操作时,需要了解JavaScript的数据类型,以保证程序的正确性。本文将介绍JavaScript的各种数据类型及其使用。 基本数据类型 数字类型(Number) JavaScript中的数字类型包括整数和浮点数,在进行应用开发时可以进行和常见的数学运…

    JavaScript 2023年5月18日
    00
  • js实现四舍五入完全保留两位小数的方法

    下面就来详细讲解一下“js实现四舍五入完全保留两位小数的方法”的完整攻略。 方案一:toFixed() JavaScript中提供了一个内置方法toFixed(),可以将数字保留指定位数的小数。使用方法如下: const num = 123.456; const fixedNum = num.toFixed(2); console.log(fixedNum)…

    JavaScript 2023年5月28日
    00
  • 原生JavaScript实现AJAX、JSONP

    原生JavaScript实现AJAX AJAX是Asynchronous JavaScript and XML(异步JavaScript和XML)的简称,是一种通过在后台与服务器进行少量数据交换的方式,实现页面局部更新的技术。 基本原理 AJAX的原理是利用JavaScript向后台服务器发送HTTP请求并接收后台服务器返回的数据,在不刷新页面的情况下对页面…

    JavaScript 2023年5月27日
    00
  • 深入理解javascript函数参数与闭包

    针对“深入理解JavaScript函数参数与闭包”的攻略,我会先介绍一下函数参数的概念以及它们的类型和用法,然后再进行闭包的详细讲解和示例说明。 一、函数参数 函数参数是在函数定义时声明的,用于接受传递给函数的值。JavaScript中函数参数有两种类型:形式参数和实际参数。 1.1 形参和实参 函数定义时,使用括号包裹形参,形参不需要具体的值,其只是一个占…

    JavaScript 2023年5月27日
    00
  • js删除Array数组中指定元素的两种方法

    当我们使用 JavaScript 的数组时,有时需要从数组中删除一个或多个特定的元素。本文将详细讲解 JavaScript 中删除数组元素的两种常见方法。 方法一:使用splice()方法 splice() 方法可以用来在任何指定的位置添加或删除数组元素。删除元素时,splice() 方法需要两个参数:被删除元素的位置和要删除的元素个数。 下面是使用spli…

    JavaScript 2023年5月27日
    00
  • js中动态创建json,动态为json添加属性、属性值的实例

    让我们来详细讲解一下JS中动态创建JSON、动态为JSON添加属性、属性值的实例。 一、什么是JSON JSON,全称为JavaScript Object Notation,是一种结构化的数据格式。它以文本的形式表示数据,比XML更加轻量级,也更容易解析。JSON由键值对构成,键值对之间用逗号分隔,最外层使用花括号{}。 JSON的键必须是字符串类型,值可以…

    JavaScript 2023年5月27日
    00
  • JavaScript中async await更优雅的错误处理方式

    关于JavaScript中async/await更优雅的错误处理方式,以下是完整的攻略: 1. 异步函数 在使用async/await模式的时候,需要将异步操作封装到一个函数中,在函数前面声明async,使其变成一个异步函数,如下所示: async function fetchData() { const response = await fetch(‘/a…

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