经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
js模仿京东首页的倒计时功能
来源:cnblogs  作者:lovelyk  时间:2021/1/25 11:11:09  对本文有异议

模仿京东首页的倒计时

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

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

思路:

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

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

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

这是我做出来的效果

最后附上我的代码

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. <style>
  8. *{
  9. margin: 0;
  10. padding: 0;
  11. }
  12. .countdown{
  13. width: 190px;
  14. height: 260px;
  15. margin: 0 auto;
  16. background: #E83632;
  17. background: url(//misc.360buyimg.com/mtd/pc/index_2019/1.0.0/assets/img/4a15d8883775742e3efbb850ae14def7.png);
  18. }
  19. .countdown .title{
  20. color: #fff;
  21. font-size: 30px;
  22. text-align: center;
  23. font-weight: bold;
  24. padding-top: 30px;
  25. }
  26. .countdown .desc{
  27. color: #fff;
  28. font-size: 14px;
  29. text-align: center;
  30. margin-top: 100px;
  31. vertical-align: middle;
  32. }
  33. .countdown .desc>strong{
  34. font-size: 18px;
  35. vertical-align: middle;
  36. margin-right: 8px;
  37. }
  38. .countdown .time{
  39. width: 80%;
  40. height: 30px;
  41. margin:0 auto;
  42. margin-top: 10px;
  43. color: #fff;
  44. font-size: 20px;
  45. margin-left: 25px;
  46. }
  47. .countdown .time>span{
  48. width: 30px;
  49. height: 30px;
  50. display: inline-block;
  51. background: #2f3430;
  52. margin-left: 5px;
  53. text-align: center;
  54. font-weight: bold;
  55. padding-top: 4px;
  56. }
  57. </style>
  58. </head>
  59. <body>
  60. <div class="countdown">
  61. <div class="title">京东秒杀</div>
  62. <div class="desc">
  63. <strong></strong>点倒计时
  64. </div>
  65. <div class="time">
  66. <span class="h"></span>
  67. :
  68. <span class="m"></span>
  69. :
  70. <span class="s"></span>
  71. </div>
  72. </div>
  73. <script>
  74. //封装为Date的内置函数
  75. Date.prototype.countdown = function countdown(endDate){
  76. if(!(endDate instanceof Date)){
  77. console.error('Uncaught TypeError :'+endDate+'不是Date类型');
  78. return undefined;
  79. }
  80. var nowDate = new Date();
  81. //定义cha为时间差 ,接收 现在到结束时的时间戳
  82. var cha = endDate.getTime() - nowDate.getTime();
  83. var year = parseInt(cha / (365*24*60*60*1000));
  84. var value = cha % (365*24*60*60*1000);
  85. var day = parseInt(value / (24*60*60*1000));
  86. var h = parseInt(value / (60*60*1000));
  87. value = value % (60*60*1000);
  88. var m = parseInt(value / (60*1000));
  89. value = value % (60*1000);
  90. var s = parseInt(value / (1000));
  91. var ms = parseInt(s);
  92. return {year,day,h,m,s,ms};
  93. }
  94. var djs = setInterval(function(){
  95. //设置结束时间:月份从0-11,0代表1月份,11就是12月份
  96. var endDate = new Date(2021,0,25,0,0,0,0);
  97. //匿名调用Date的自定义内置函数,传入结束的日期,返回一个对象
  98. var obj = new Date().countdown(endDate);
  99. //对返回值结果判定
  100. if( undefined === obj){
  101. clearInterval(djs);
  102. return;
  103. }
  104. //获取倒计时需要渲染的元素
  105. var end = document.querySelector('strong');
  106. var h = document.querySelector('.h');
  107. var m = document.querySelector('.m');
  108. var s = document.querySelector('.s');
  109. //时分秒为个位数时,前面补0
  110. if(obj.s < 10) obj.s = '0'+obj.s;
  111. if(obj.m < 10) obj.m = '0'+obj.m;
  112. if(obj.h < 10) obj.h = '0'+obj.h;
  113. //把数据渲染到页面
  114. s.innerHTML = obj.s;
  115. m.innerHTML = obj.m;
  116. h.innerHTML = obj.h;
  117. end.innerHTML = endDate.getHours();
  118. //时间到了清除定时器
  119. if( 0===obj.h && 0===obj.m && 0===obj.s ){
  120. clearInterval(djs);
  121. }
  122. },1000);
  123. </script>
  124. </body>
  125. </html>

原文链接:http://www.cnblogs.com/lovelyk/p/14320757.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号