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日

相关文章

  • 微信小程序实现animation动画

    以下是“微信小程序实现animation动画”的完整攻略: 1. 先了解animation动画 在微信小程序中,我们可以使用wx.createAnimation()方法来创建一个动画对象。这个方法返回的是Animation对象,我们可以使用这个对象来定义一系列动画帧,最后开始执行这些帧达到动画效果。 2. 创建Animation对象 要创建Animation…

    JavaScript 2023年6月10日
    00
  • JS正则表达式替换字符串replace()方法实例代码

    下面是关于JS正则表达式替换字符串replace()方法的详细攻略: 什么是JS正则表达式替换字符串replace()方法? 在JavaScript中,字符串replace() 方法可以将一个字符串中的指定内容替换成新的内容,这有很多应用场景。其中,JS正则表达式替换字符串replace()方法,可以让开发者使用正则表达式来进行替换操作,更加高效和灵活。 J…

    JavaScript 2023年5月28日
    00
  • JS获取IP、MAC和主机名的五种方法

    当网站需要获取客户端设备的IP、MAC地址或主机名时,我们可以使用JavaScript来实现。接下来,我们将会介绍五种获取这些信息的方法。 获取IP地址的方法 使用XMLHttpRequest对象向外部API发起请求,从响应中获取IP地址信息。 function getIP() { const xhr = new XMLHttpRequest(); xhr.…

    JavaScript 2023年5月28日
    00
  • JavaScript的Vue.js库入门学习教程

    JavaScript的Vue.js库入门学习教程 什么是Vue.js? Vue.js是一款流行的JavaScript库,用于构建用户界面。它是一个MVVM模式的库,即Model-View-ViewModel的缩写,由Evan You在2014年开始编写,并在GitHub上发布。Vue.js具有小巧、快速、易于学习和灵活的特点,能够简化Web应用程序的开发过程…

    JavaScript 2023年5月27日
    00
  • 详解如何用JavaScript编写一个单元测试

    下面我将详细讲解如何用JavaScript编写一个单元测试的完整攻略。 什么是单元测试? 单元测试(Unit Testing)是一种测试方法,是指开发人员针对程序模块(函数、类等)编写测试代码,对程序代码进行测试以保证其符合设计要求、能够正常运行。单元测试主要是用于测试单个功能是否正常运行、边界条件是否能够被正确处理等。 单元测试的好处 验证代码的正确性 维…

    JavaScript 2023年5月27日
    00
  • npm qs模块使用详解

    npm qs模块使用详解 什么是qs模块? qs是一个Node.js模块,用于解析查询字符串(query string)。查询字符串是一组键值对(key-value)字符串,用来在URL中传递参数。qs模块可以将查询字符串解析为JavaScript对象,并且还可以将JavaScript对象序列化成查询字符串。 安装 使用npm安装qs模块: npm inst…

    JavaScript 2023年6月10日
    00
  • layui lay-verify form表单自定义验证规则详解

    下面是关于“layui lay-verify form表单自定义验证规则”的详细攻略: 简介 Layui是一款非常流行的前端UI框架,其有丰富的组件和易于使用的API,而在Layui中,表单验证是非常常见和重要的功能。Layui通过lay-verify实现表单验证,可以通过自定义lay-verify来设置表单验证的规则。 自定义验证规则 在Layui中,自定…

    JavaScript 2023年6月10日
    00
  • 千篇一律的JS运算符讲解,一起来看看

    千篇一律的JS运算符讲解,一起来看看 前言 JS运算符是编写JS代码时非常基本的一种语法。很多初学者在学习JS时可能会忽略这些运算符的学习,但却是非常重要的基础。在本篇文章中,我们将会全面讲解JS的运算符,并提供一些示例来帮助读者更好地理解这些内容。 算术运算符 运算符 描述 示例 + 加法 10 + 20 = 30 – 减法 20 – 10 = 10 * …

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