JS动态显示倒计时效果

JS动态显示倒计时效果是网页开发中经常使用的效果之一,具体可以分为以下几个步骤:

步骤一:HTML布局与样式

首先,我们需要在HTML中布置好倒计时的结构,通常是一个包含了时、分、秒的块级元素,例如:

<div id="countdown">
  <span id="hour"></span>:
  <span id="minute"></span>:
  <span id="second"></span>
</div>

接下来,我们为倒计时部分加上相应的CSS样式,使其在页面上能够美观地呈现出来,例如:

#countdown {
  font-size: 24px;
  font-weight: bold;
  text-align: center;
}

#countdown span {
  display: inline-block;
  width: 40px;
  height: 40px;
  background-color: #333;
  color: #fff;
  line-height: 40px;
  text-align: center;
  border-radius: 5px;
  margin-right: 10px;
}

步骤二:获取当前时间和目标时间

接下来,我们需要使用JavaScript获取当前时间和目标时间,以便计算倒计时的时间差。通常可以使用Date对象获取当前时间,同时在HTML中使用自定义属性来指定目标时间,例如:

<div id="countdown" data-target="2022-01-01 00:00:00">
  <span id="hour"></span>:
  <span id="minute"></span>:
  <span id="second"></span>
</div>
const now = new Date();
const target = new Date(document.getElementById('countdown').dataset.target);

步骤三:计算时间差和更新倒计时

接下来,我们需要计算出当前时间和目标时间的时间差,并使用定时器来每秒更新一次倒计时。我们可以使用以下代码来计算时间差,并更新HTML中的时、分、秒。

function updateCountdown() {
  const now = new Date();
  const target = new Date(document.getElementById('countdown').dataset.target);

  const diff = target - now;

  // 时间差转成时分秒
  const hours = Math.floor(diff / 1000 / 60 / 60);
  const minutes = Math.floor(diff / 1000 / 60) % 60;
  const seconds = Math.floor(diff / 1000) % 60;

  // 更新HTML中的时、分、秒
  document.getElementById('hour').textContent = String(hours).padStart(2, '0');
  document.getElementById('minute').textContent = String(minutes).padStart(2, '0');
  document.getElementById('second').textContent = String(seconds).padStart(2, '0');
}

// 每秒更新一次倒计时
setInterval(updateCountdown, 1000);

示例

下面是两个示例来展示该效果的具体实现过程。

示例一:普通的倒计时效果

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>JS动态倒计时效果</title>
    <style>
      #countdown {
        font-size: 24px;
        font-weight: bold;
        text-align: center;
      }

      #countdown span {
        display: inline-block;
        width: 40px;
        height: 40px;
        background-color: #333;
        color: #fff;
        line-height: 40px;
        text-align: center;
        border-radius: 5px;
        margin-right: 10px;
      }
    </style>
  </head>
  <body>
    <div id="countdown" data-target="2022-01-01 00:00:00">
      <span id="hour"></span>:
      <span id="minute"></span>:
      <span id="second"></span>
    </div>
    <script>
      function updateCountdown() {
        const now = new Date();
        const target = new Date(document.getElementById('countdown').dataset.target);

        const diff = target - now;

        // 时间差转成时分秒
        const hours = Math.floor(diff / 1000 / 60 / 60);
        const minutes = Math.floor(diff / 1000 / 60) % 60;
        const seconds = Math.floor(diff / 1000) % 60;

        // 更新HTML中的时、分、秒
        document.getElementById('hour').textContent = String(hours).padStart(2, '0');
        document.getElementById('minute').textContent = String(minutes).padStart(2, '0');
        document.getElementById('second').textContent = String(seconds).padStart(2, '0');
      }

      // 每秒更新一次倒计时
      setInterval(updateCountdown, 1000);
    </script>
  </body>
</html>

示例二:带有过期提示的倒计时效果

在某些场合下,我们可能需要在倒计时到达时停止倒计时,同时给出一个过期提示。可以在updateCountdown函数中使用以下代码,来实现这一效果。

function updateCountdown() {
  const now = new Date();
  const target = new Date(document.getElementById('countdown').dataset.target);

  const diff = target - now;

  if (diff < 0) {
    // 倒计时结束,停止定时器
    clearInterval(countdownInterval);

    // 显示过期提示
    document.getElementById('countdown').textContent = '倒计时已结束!';
  } else {
    // 时间差转成时分秒
    const hours = Math.floor(diff / 1000 / 60 / 60);
    const minutes = Math.floor(diff / 1000 / 60) % 60;
    const seconds = Math.floor(diff / 1000) % 60;

    // 更新HTML中的时、分、秒
    document.getElementById('hour').textContent = String(hours).padStart(2, '0');
    document.getElementById('minute').textContent = String(minutes).padStart(2, '0');
    document.getElementById('second').textContent = String(seconds).padStart(2, '0');
  }
}

// 每秒更新一次倒计时
const countdownInterval = setInterval(updateCountdown, 1000);

在HTML中使用与示例一相同的结构,这里不再赘述。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS动态显示倒计时效果 - Python技术站

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

相关文章

  • javascript实现日期时间动态显示示例代码

    下面我详细讲解一下“javascript实现日期时间动态显示示例代码”的完整攻略: 1. 前置知识 在学习本文之前,需要掌握以下基础知识:- HTML基础语法- CSS基础语法- JavaScript基础语法- JavaScript日期对象的使用方法 2. 实现方法及代码解析 2.1 方法1:使用setInterval()函数实现 使用setInterval…

    JavaScript 2023年5月27日
    00
  • JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例

    下面是 “JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例”的完整攻略: 1. DOM节点插入操作 DOM节点插入操作指的是通过JavaScript代码来向HTML页面中插入新的HTML元素节点的操作,它的实现需要使用到Document对象提供的createElement()方法来创建新节点,以及appendChild()方法来将新节点添加到指定的父…

    JavaScript 2023年5月28日
    00
  • 15条JavaScript最佳实践小结

    下面是对“15条JavaScript最佳实践小结”的详细解读。 1. 使用规范的命名规则 使用规范的命名规则有助于提高代码的可读性,并减少错误发生的概率。 变量和函数名应该使用驼峰命名法,首字母小写。 类名应该使用帕斯卡命名法,首字母大写。 常量名应该全部大写,单词间用下划线分隔。 示例说明: // 变量和函数名使用驼峰命名法 let myVariable …

    JavaScript 2023年5月18日
    00
  • 通过jsonp获取json数据实现AJAX跨域请求

    使用JSONP技术实现AJAX跨域请求的步骤如下: 1.在主页面中定义一个回调函数,函数名保证唯一性。这个回调函数会接受JSON数据作为参数,并对其进行处理。 例如: function handleJsonData(data) { console.log(data); }; 2.在主页面中创建一个script标签,标签的src属性指向JSON数据请求的网址链…

    JavaScript 2023年5月27日
    00
  • JavaScript中String.match()方法的使用详解

    JavaScript中String.match()方法的使用详解 简介 JavaScript提供了很多方法操作字符串,其中String.match()是一种常用的方法。它可以在一个字符串中查找匹配一个正则表达式的内容,并返回匹配结果。 语法 String.match(regexp) 其中,regexp是一个正则表达式对象。 返回值 String.match(…

    JavaScript 2023年5月28日
    00
  • XMLHttpRequest对象_Ajax异步请求重点(推荐)

    XMLHttpRequest对象_Ajax异步请求重点(推荐) 什么是Ajax异步请求 Ajax全称为Asynchronous Javascript And XML,翻译成中文是“异步的 JavaScript 和 XML”。Ajax技术是一种在不重新加载整个页面的情况下,通过后台与服务器进行少量数据交换,实现页面的局部刷新,从而提高页面的响应速度和用户体验。…

    JavaScript 2023年6月11日
    00
  • JS中的算法与数据结构之队列(Queue)实例详解

    JS中的算法与数据结构之队列(Queue)实例详解 什么是队列? 队列是一种线性数据结构,它是一种先进先出的数据结构(FIFO),即最先进队列的元素也最先出队列。 队列有两个基本操作:入队和出队。入队将元素添加到队列的末尾,而出队则是从队列的前端删除元素。 队列的实现方式 我们可以用数组和链表来实现队列,这里我们介绍一下使用数组来实现队列的方式。 用数组实现…

    JavaScript 2023年5月27日
    00
  • asp.net GridView中使用RadioButton单选按钮的方法

    当使用ASP.NET GridView控件来呈现数据时,我们经常需要允许用户选择一个或多个项目。在这种情况下,RadioButton单选按钮是最常用控件之一。在本攻略中,我将向您演示在ASP.NET GridView中使用RadioButton单选按钮的完整过程。 第一步:GridView控件的绑定 首先,我们需要绑定GridView控件以显示我们需要的数据…

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