模仿京东首页的倒计时

我们学习了定时器,可以用定时器做一个倒计时,于是我模仿了京东首页倒计时。

先看看京东首页的倒计时。

思路:

  1. 如何倒计时?
  • 给一个未来的时间。然后计算未来时间到现在的时间戳。
  • 用定时器每隔一秒,计算时间戳。然后把时间戳转换为时分秒。
  1. 转换的时候,要注意取整和取余,别搞混了。

  2. 最后拿到了数据,就把数据填充到静态页面中。

  3. 填充数据的时候,判断一下,当为个位数的时候,前面补0,确保两位数字。

这是我做出来的效果

最后附上我的代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
*{
margin: 0;
padding: 0;
}
.countdown{
width: 190px;
height: 260px;
margin: 0 auto;
background: #E83632;
background: url(//misc.360buyimg.com/mtd/pc/index_2019/1.0.0/assets/img/4a15d8883775742e3efbb850ae14def7.png);
}
.countdown .title{
color: #fff;
font-size: 30px;
text-align: center;
font-weight: bold;
padding-top: 30px;
}
.countdown .desc{
color: #fff;
font-size: 14px;
text-align: center;
margin-top: 100px;
vertical-align: middle;
}
.countdown .desc>strong{
font-size: 18px;
vertical-align: middle;
margin-right: 8px; }
.countdown .time{
width: 80%;
height: 30px;
margin:0 auto;
margin-top: 10px;
color: #fff;
font-size: 20px;
margin-left: 25px;
}
.countdown .time>span{
width: 30px;
height: 30px;
display: inline-block;
background: #2f3430;
margin-left: 5px;
text-align: center;
font-weight: bold;
padding-top: 4px;
}
</style>
</head>
<body> <div class="countdown">
<div class="title">京东秒杀</div>
<div class="desc">
<strong></strong>点倒计时
</div>
<div class="time">
<span class="h"></span>
:
<span class="m"></span>
:
<span class="s"></span>
</div>
</div>
<script>
//封装为Date的内置函数
Date.prototype.countdown = function countdown(endDate){
if(!(endDate instanceof Date)){
console.error('Uncaught TypeError :'+endDate+'不是Date类型');
return undefined;
}
var nowDate = new Date();
//定义cha为时间差 ,接收 现在到结束时的时间戳
var cha = endDate.getTime() - nowDate.getTime(); var year = parseInt(cha / (365*24*60*60*1000)); var value = cha % (365*24*60*60*1000); var day = parseInt(value / (24*60*60*1000)); var h = parseInt(value / (60*60*1000));
value = value % (60*60*1000); var m = parseInt(value / (60*1000));
value = value % (60*1000); var s = parseInt(value / (1000)); var ms = parseInt(s); return {year,day,h,m,s,ms};
} var djs = setInterval(function(){
//设置结束时间:月份从0-11,0代表1月份,11就是12月份
var endDate = new Date(2021,0,25,0,0,0,0);
//匿名调用Date的自定义内置函数,传入结束的日期,返回一个对象
var obj = new Date().countdown(endDate);
//对返回值结果判定
if( undefined === obj){
clearInterval(djs);
return;
}
//获取倒计时需要渲染的元素
var end = document.querySelector('strong');
var h = document.querySelector('.h');
var m = document.querySelector('.m');
var s = document.querySelector('.s');
//时分秒为个位数时,前面补0
if(obj.s < 10) obj.s = '0'+obj.s;
if(obj.m < 10) obj.m = '0'+obj.m;
if(obj.h < 10) obj.h = '0'+obj.h;
//把数据渲染到页面
s.innerHTML = obj.s;
m.innerHTML = obj.m;
h.innerHTML = obj.h;
end.innerHTML = endDate.getHours();
//时间到了清除定时器
if( 0===obj.h && 0===obj.m && 0===obj.s ){
clearInterval(djs);
}
},1000); </script>
</body>
</html>

js模仿京东首页的倒计时功能的更多相关文章

  1. 原生js实现一个简单的倒计时功能

    大家好,我是云中君!欢迎大家来观看我的博客 之前那,在群里看到很多人问,关于电商网站中的倒计时功能怎么实现,很多人说在网上找了很多插件,但是不是很会用,所以今天就在这里分享一下我封装的一个小的倒计时功 ...

  2. JS 模仿京东键盘输入内容

    css代码 .search { width: 300px; height: 80px; margin: 0 auto; position: relative; } .con { display: no ...

  3. 模仿东京首页banner轮播,京东新闻上下滚动动画实现(动画实现)

    接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 首页banner动画实现 京东新闻上下动画实现 想着 ...

  4. 想着模仿京东微信首页呢,banner滚动搞定了,写到了一半了

    接着上篇 微信小程序-阅读小程序demo写:http://www.cnblogs.com/muyixiaoguang/p/5917986.html 想着模仿京东首页呢,结果也没赶得及写完,轮播图让我搞 ...

  5. jQ效果:jQuery之插件开发短信发送倒计时功能

    实现的主要功能如下: 1.点击按钮的时候,可以进行倒计时,倒计时自定义. 2.当接收短信失败后,倒计时停止,可点击重新发送短信. 3.点击的元素支持一般标签和input标签. html代码: < ...

  6. 模块:js实现一个倒计时功能

    1.给显示内容加样式 <style> #p1{font-size: large; color: red;} </style> 2.客户端页面 <div id=" ...

  7. js 鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层异步加载模式

    js用处:在做商城时,首页图片太多,严重影响首页打开速度,所以我们需要用到异步加载楼层.js名称:鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层模式js解释:1.用于商城的楼层内容异步加载,滚动条 ...

  8. js实现是倒计时功能

    工作中经常用到倒计时的功能,最近在整理之前做的项目的时候,发现自己写过一个倒计时的功能的效果,这里和大家分享下!实现这个功能是用原生js写的,不需要加载额外的库文件!功能比较简单,但是可以在此基础上扩 ...

  9. JS实现为控件添加倒计时功能

    一.概述 在有些报表需求中,需要为控件添加倒计时功能,限制到某一个时间点后能进行一项操作或不能进行某项操作,比如查询,导出功能等等,又需要人性化地显示还有多少时间,即倒计时功能,比如下图中我们限制这个 ...

随机推荐

  1. css 17-CSS3的常见边框汇总

    17-CSS3的常见边框汇总 #CSS3 常见边框汇总 <!DOCTYPE html> <html lang="en"> <head> < ...

  2. js下 Day15、正则表达式

    一.正则表达式简介 什么是正则表达式 正则表达式,也叫规则表达式, 是对字符串操作的一种逻辑公式. 为什么要使用正则? 1.使用极简单的方式,去匹配字符串 2.速度快,代码少 3.在复杂的字符串中快速 ...

  3. 什么是java的深浅拷贝?

    什么是java的深浅拷贝? 浅拷贝 就是很肤浅的拷贝,只拷贝了别人的地址.没有拷贝地址里面的值.地址里面的值改变后,就都改变了. 深拷贝 就是很深入的拷贝,深入到核心的拷贝,拷贝了别人地址里面的值,别 ...

  4. windows 任何软件出现异常有日志 w3wp.exe [10608]中发生了未处理的Microsoft .Net Framework异常

    右键我的电脑 管理

  5. python初学者-从键盘获取信息

    name = input(">>> 姓名:") QQ = input(">>>QQ: ") phone_num = inpu ...

  6. 本地H5模式写的APP体验可以比APP还好

    很多APP使用H5编写,但APP链接的是远程的url的模式,导致了APP的用户体验极差,因为当你使用远程的H5 url的时候,打开H5页面的速度由网络决定,而不是由手机性能决定,假如用户在没有网络的地 ...

  7. 浅入kubernetes(1):Kubernetes 入门基础

    目录 Kubernetes 入门基础 Introduction basic of kubernetes What Is Kubernetes? Components of Kubernetes Kub ...

  8. Keras使用多个GPU并行

    model = Model(inputs=[v_i, v_j], outputs=output_list) model = multi_gpu_model(model,4) model.compile ...

  9. [leetcode]725. Split Linked List in Parts链表分块

    思路很简单  按时链表的题做起来很容易犯小错误,思维要缜密 还要多练习啊 做之前最好画算法框图 public ListNode[] splitListToParts(ListNode root, in ...

  10. Redis的内存淘汰

    Redis占用内存大小 我们知道Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小. 1.通过配置文件配置 ...