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中,逻辑运算符包括“与”(&&)、“或”(||)及“非”(!)三种,其中“与”和“或”经常被用来作为条件判断语句中的关键字。本篇文章将会详细讲解“与”(&&)和“或”(||)这两个运算符的用法以及其常见应用场景。 “与”(&&a…

    JavaScript 2023年5月17日
    00
  • 用js取得鼠标所在位置的对象

    要取得鼠标所在位置的对象,可以使用JavaScript的MouseEvent对象,该对象包含了许多与鼠标事件有关的属性和方法。以下是使用JavaScript取得鼠标所在位置的对象的完整攻略: 步骤1:添加事件监听器 首先需要为文档中的元素添加一个鼠标移动事件监听器。这个事件监听器将会在鼠标移动时被触发,并且将会传递一个MouseEvent对象作为参数。 示例…

    JavaScript 2023年6月10日
    00
  • JQuery将字符串转为json对象的四种方法

    下面是详细的讲解: 背景 在开发过程中,我们经常需要将字符串转换成 JSON 对象,然后进行操作。而 JQuery 提供了四种方法来完成这项任务。下面我们逐一来了解这四种方法。 方法一:$.parseJSON() 这是最常用的方法,直接调用这个方法即可将字符串转换为 JSON 对象。 var str = ‘{"name": "张…

    JavaScript 2023年5月27日
    00
  • JavaScript表单通过正则表达式验证电话号码

    以下是JavaScript表单通过正则表达式验证电话号码的完整攻略: 1. 理解正则表达式 正则表达式是一种表示文本模式的方法,可以用于搜索、替换和验证字符串。在JavaScript中,可以使用RegExp对象来创建正则表达式。常用的正则表达式元字符包括: ^ 匹配字符串开头 $ 匹配字符串结尾 . 匹配除换行符外的任意字符 \d 匹配数字 + 匹配前面的元…

    JavaScript 2023年6月10日
    00
  • Javascript 常见的高阶函数详情

    Javascript 常见的高阶函数详情 什么是高阶函数? 高阶函数指接受函数作为参数或者返回一个函数的函数,这些函数能够方便地组合代码以及增强函数的功能。在Javascript中,高阶函数是一种强大的编程工具,它们可以让我们以更简洁、优雅、灵活和模块化的方式编写代码。 为什么要使用高阶函数? 使用高阶函数具有以下优势: 更加灵活:高阶函数可以接受不同的函数…

    JavaScript 2023年5月27日
    00
  • js实现表单及时验证功能 用户信息立即验证

    下面我将为您讲解如何通过JavaScript实现表单及时验证功能,以及如何立即验证用户信息。本攻略分为以下几个步骤: 创建一个表单 绑定表单的提交事件 在提交事件中验证表单数据 实现用户信息的立即验证 接下来我会对每个步骤进行详细的讲解,并提供两个示例说明。请您耐心阅读。 创建一个表单 在HTML页面中,使用 <form> 标签创建一个表单,在表…

    JavaScript 2023年6月10日
    00
  • 关于js里的this关键字的理解

    关于JS中的this关键字 在JavaScript中,this关键字是一个非常重要的概念,有着不同的用法和含义。在不同的情况下它所代表的对象也不同,因此理解this的含义和使用场景显得非常重要。 this的指向 在JavaScript中,this表示当前函数的执行上下文。根据函数的调用方式不同,this指向的对象也不同。 通常来说,this的指向可以分为以下…

    JavaScript 2023年6月10日
    00
  • JavaScript的Cookies

    JavaScript的Cookies 什么是Cookies Cookies是存储于用户浏览器中的一小块数据,此数据在用户在互联网上访问同一个网站时会被一同发送到网站服务器上。Cookies最初用于记录用户的数据,以便稍后再次访问时使用。例如,当你在某个网站购物时,浏览器会保存你的购物篮信息,以便你关闭浏览器之后可以再次访问购物篮。Cookies可以在网站服务…

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