JS实现倒计时(天数、时、分、秒)

yizhihongxing

JS实现倒计时是一种常见的前端实现方式,在各类网站和应用中均有广泛应用。下面是JS实现倒计时的完整攻略:

步骤一:准备页面结构

首先需要在HTML页面中准备好倒计时所需的HTML结构,包括倒计时DOM元素的容器,每个倒计时数字占据的DOM元素等。

例如,下面是一个简单的倒计时页面结构示例:

<div class="countdown-wrapper">
  <div class="countdown-item">
    <span class="countdown-item__number days"></span>
    <span class="countdown-item__text">Days</span>
  </div>
  <div class="countdown-item">
    <span class="countdown-item__number hours"></span>
    <span class="countdown-item__text">Hours</span>
  </div>
  <div class="countdown-item">
    <span class="countdown-item__number minutes"></span>
    <span class="countdown-item__text">Minutes</span>
  </div>
  <div class="countdown-item">
    <span class="countdown-item__number seconds"></span>
    <span class="countdown-item__text">Seconds</span>
  </div>
</div>

步骤二:编写JS代码

接下来需要编写JS代码实现倒计时的功能。具体实现方式如下:

  1. 倒计时定时器

首先需要通过JS代码设置一个定时器,在每一秒钟的时间间隔中更新倒计时数字的显示。

例如,下面是一个简单的倒计时定时器:

function countdown() {
  const targetDate = new Date('2022-01-01T00:00:00Z');
  const now = new Date();

  const timeDiff = targetDate - now;
  const days = Math.floor(timeDiff / 1000 / 60 / 60 / 24);
  const hours = Math.floor(timeDiff / 1000 / 60 / 60 % 24);
  const minutes = Math.floor(timeDiff / 1000 / 60 % 60);
  const seconds = Math.floor(timeDiff / 1000 % 60);

  document.querySelector('.days').innerHTML = days;
  document.querySelector('.hours').innerHTML = hours;
  document.querySelector('.minutes').innerHTML = minutes;
  document.querySelector('.seconds').innerHTML = seconds;
}

setInterval(countdown, 1000);
  1. 数字补零

为了使倒计时数字显示更加美观,通常需要对数字进行补零操作。例如,在小时数或分钟数为1位数时,需要在左侧补0,使其显示为2位数字。

例如,下面是一个补零函数的示例:

function addLeadingZero(num) {
  return num < 10 ? '0' + num : num;
}

在倒计时代码中,可以使用该函数对小时数和分钟数进行补零操作。

步骤三:添加CSS样式

最后需要添加CSS样式,美化倒计时的显示效果。

例如,下面是一个简单的倒计时CSS样式:

.countdown-wrapper {
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 4rem;
  margin-top: 50px;
}

.countdown-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: 0 10px;
}

.countdown-item__number {
  font-family: monospace;
  font-size: 5rem;
  color: #222;
}

.countdown-item__text {
  font-size: 1.2rem;
  color: #777;
  text-transform: uppercase;
}

示例说明

下面是两个简单的示例说明:

示例一:倒计时到某一具体日期

例如,计算距离某一具体日期的倒计时:

function countdown() {
  const targetDate = new Date('2022-01-01T00:00:00Z');
  const now = new Date();

  const timeDiff = targetDate - now;
  const days = Math.floor(timeDiff / 1000 / 60 / 60 / 24);
  const hours = Math.floor(timeDiff / 1000 / 60 / 60 % 24);
  const minutes = Math.floor(timeDiff / 1000 / 60 % 60);
  const seconds = Math.floor(timeDiff / 1000 % 60);

  document.querySelector('.days').innerHTML = days;
  document.querySelector('.hours').innerHTML = addLeadingZero(hours);
  document.querySelector('.minutes').innerHTML = addLeadingZero(minutes);
  document.querySelector('.seconds').innerHTML = addLeadingZero(seconds);
}

setInterval(countdown, 1000);

该示例中,倒计时终点时间为2022年1月1日。每1秒钟更新一次倒计时显示。

示例二:倒计时剩余时间

例如,计算今天剩余时间的倒计时:

function countdown() {
  const now = new Date();
  const endOfDay = new Date(now);
  endOfDay.setHours(24, 0, 0, 0);

  const timeDiff = endOfDay - now;
  const hours = Math.floor(timeDiff / 1000 / 60 / 60 % 24);
  const minutes = Math.floor(timeDiff / 1000 / 60 % 60);
  const seconds = Math.floor(timeDiff / 1000 % 60);

  document.querySelector('.hours').innerHTML = addLeadingZero(hours);
  document.querySelector('.minutes').innerHTML = addLeadingZero(minutes);
  document.querySelector('.seconds').innerHTML = addLeadingZero(seconds);
}

setInterval(countdown, 1000);

该示例中,倒计时终点时间为今晚24点。每1秒钟更新一次倒计时显示。

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

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

相关文章

  • 一文教会你如何在JavaScript中使用展开运算符

    当我们使用展开运算符时,我们可以把一个数组或对象拆分成多个值来使用。本文将详细讲解如何在JavaScript中使用展开运算符。 展开运算符 展开运算符(…)可以将一个数组或对象拆分成多个值来使用。它的语法如下: // 展开一个数组 const arr = [1, 2, 3]; console.log(…arr); // 1 2 3 // 展开一个对象…

    JavaScript 2023年5月27日
    00
  • JS实现把一个页面层数据传递到另一个页面的两种方式

    JS 实现把一个页面层数据传递到另一个页面主要有两种方式:URL参数传递和 localStorage 本地存储。 URL 参数传递 URL 参数传递是将要传递的数据拼接在 URL 中,通过 URL 传递给另一个页面。这种方式简单,易于实现,适用于传递少量数据。下面提供一个使用 URL 参数传递的示例: 发送页面: const name = "Ali…

    JavaScript 2023年6月11日
    00
  • 前端工程师新手必读:掌握网页设计的基本技能和弄清设计的概念

    前端工程师新手必读:掌握网页设计的基本技能和弄清设计的概念 理解设计的概念 在进行网页设计之前,需要先理解设计的概念。设计不仅仅是美的堆砌,而是需要达到清晰、简洁、易用、美观的效果。一个好的设计,要能够吸引用户的眼球,也要让用户可以方便地使用。 其中,设计的前提条件是对用户和品牌的深入了解。根据产品性质,合理规划内容布局和视觉结构。在设置页面元素时,遵循一定…

    JavaScript 2023年5月19日
    00
  • js中的setInterval和setTimeout使用实例

    JS中的setInterval和setTimeout使用实例 在JS中,setInterval和setTimeout是两个常用的计时器函数。它们可以根据指定的时间间隔或延迟来进行周期性的或单次的定时操作。下面,我们将详细讲解这两个函数的使用实例。 1. setInterval的使用实例 setInterval函数用于周期性地执行代码,它接收两个参数:第一个参…

    JavaScript 2023年6月11日
    00
  • javascript 文字上下间隔滚动的代码 符合WEB标准 脚本之家修正版

    下面就来详细讲解“JavaScript文字上下间隔滚动的代码符合WEB标准脚本之家修正版”的完整攻略: 一、问题描述 有时候我们需要在网页中展示一些文字,但是为了让网页不显得太过单调,我们希望这些文字能够以一种滚动的形式进行展示,类似于一些新闻和通知栏目的效果。那么如何实现这样的滚动效果呢?下面就来介绍一种符合WEB标准的JavaScript文字上下间隔滚动…

    JavaScript 2023年6月11日
    00
  • javascript使用btoa和atob来进行Base64转码和解码

    JavaScript中使用btoa()和atob()可以进行Base64编码和解码。Base64编码是将二进制数据编码成ASCII字符串的过程,解码则是将已编码的ASCII字符串还原为原始的二进制数据。 btoa()方法 btoa()方法可以将一个字符串进行Base64编码。 语法 string btoa(string) 参数 string: 待编码的字符串…

    JavaScript 2023年5月19日
    00
  • javascript面向对象包装类Class封装类库剖析

    JavaScript面向对象包装类Class封装类库剖析 在JavaScript中,面向对象通常使用函数和原型来实现。然而,使用这种方式在使用时容易出错,尤其是涉及到继承和多态时。为了解决这个问题,JavaScript ES6引入了“类”(Class)这个概念,从而使得JavaScript更加符合面向对象的编程思想。在本文中,我们将会介绍如何封装一个Java…

    JavaScript 2023年5月27日
    00
  • 一个基于vue3+ts+vite项目搭建初探

    下面是关于“一个基于vue3+ts+vite项目搭建初探”的完整攻略。 1. 安装vite 首先,我们需要安装vite,可以使用npm或yarn进行安装,输入以下命令: npm install -g vite # npm安装 # 或 yarn global add vite # yarn安装 这里我们选择使用npm进行安装。 2. 创建项目 在一个合适的目录…

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