CSS3+JS滚动数字时钟代码

CSS3+JS滚动数字时钟代码,适合全屏页面显示。
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  5. <title>CSS3+JS滚动数字时钟代码</title>
  6. <style>
  7. body{text-align: center;background-color: #0e141b;color: rgba(224, 230, 235, 0.89);font-family: 'Roboto Condensed', sans-serif;font-weight: 300;overflow: hidden;}
  8. .column,.colon{display: inline-block;vertical-align: top;font-size: 86px;line-height: 86px;}
  9. .column{-webkit-transition: -webkit-transform 300ms;transition: -webkit-transform 300ms;transition: transform 300ms;transition: transform 300ms, -webkit-transform 300ms;}
  10. .colon{-webkit-transition: -webkit-transform 300ms;transition: -webkit-transform 300ms;transition: transform 300ms;transition: transform 300ms, -webkit-transform 300ms;-webkit-transform: translateY(calc(50vh - 43px));transform: translateY(calc(50vh - 43px));}
  11. .colon:after{content: ':';}
  12. .num{-webkit-transition: opacity 500ms, text-shadow 100ms;transition: opacity 500ms, text-shadow 100ms;opacity: 0.025;}
  13. .num.visible{opacity: 1.0;text-shadow: 1px 1px 0px #336699;}
  14. .num.close{opacity: 0.35;}
  15. .num.far{opacity: 0.15;}
  16. .num.distant{opacity: 0.1;}
  17. </style>

  18. </head>

  19. <body>
  20. <div class="column">
  21.   <div class="num">0</div>
  22.   <div class="num">1</div>
  23.   <div class="num">2</div>
  24. </div>
  25. <div class="column">
  26.   <div class="num">0</div>
  27.   <div class="num">1</div>
  28.   <div class="num">2</div>
  29.   <div class="num">3</div>
  30.   <div class="num">4</div>
  31.   <div class="num">5</div>
  32.   <div class="num">6</div>
  33.   <div class="num">7</div>
  34.   <div class="num">8</div>
  35.   <div class="num">9</div>
  36. </div>
  37. <div class="colon"></div>
  38. <div class="column">
  39.   <div class="num">0</div>
  40.   <div class="num">1</div>
  41.   <div class="num">2</div>
  42.   <div class="num">3</div>
  43.   <div class="num">4</div>
  44.   <div class="num">5</div>
  45. </div>
  46. <div class="column">
  47.   <div class="num">0</div>
  48.   <div class="num">1</div>
  49.   <div class="num">2</div>
  50.   <div class="num">3</div>
  51.   <div class="num">4</div>
  52.   <div class="num">5</div>
  53.   <div class="num">6</div>
  54.   <div class="num">7</div>
  55.   <div class="num">8</div>
  56.   <div class="num">9</div>
  57. </div>
  58. <div class="colon"></div>
  59. <div class="column">
  60.   <div class="num">0</div>
  61.   <div class="num">1</div>
  62.   <div class="num">2</div>
  63.   <div class="num">3</div>
  64.   <div class="num">4</div>
  65.   <div class="num">5</div>
  66. </div>
  67. <div class="column">
  68.   <div class="num">0</div>
  69.   <div class="num">1</div>
  70.   <div class="num">2</div>
  71.   <div class="num">3</div>
  72.   <div class="num">4</div>
  73.   <div class="num">5</div>
  74.   <div class="num">6</div>
  75.   <div class="num">7</div>
  76.   <div class="num">8</div>
  77.   <div class="num">9</div>
  78. </div>
  79. <script>
  80. 'use strict';
  81. var size = 86;
  82. var columns = Array.from(document.getElementsByClassName('column'));
  83. var d = undefined,
  84.     c = undefined;
  85. var classList = ['visible', 'close', 'far', 'far', 'distant', 'distant'];
  86. var use24HourClock = true;

  87. function padClock(p, n) {
  88.         return p + ('0' + n).slice(-2);
  89. }

  90. function getClock() {
  91.         d = new Date();
  92.         return [use24HourClock ? d.getHours() : d.getHours() % 12 || 12, d.getMinutes(), d.getSeconds()].reduce(padClock, '');
  93. }

  94. function getClass(n, i2) {
  95.         return classList.find(function (class_, classIndex) {
  96.                 return i2 - classIndex === n || i2 + classIndex === n;
  97.         }) || '';
  98. }

  99. var loop = setInterval(function () {
  100.         c = getClock();

  101.         columns.forEach(function (ele, i) {
  102.                 var n = +c[i];
  103.                 var offset = -n * size;
  104.                 ele.style.transform = 'translateY(calc(50vh + ' + offset + 'px - ' + size / 2 + 'px))';
  105.                 Array.from(ele.children).forEach(function (ele2, i2) {
  106.                         ele2.className = 'num ' + getClass(n, i2);
  107.                 });
  108.         });
  109. }, 200 + Math.E * 10);
  110. </script>
  111. </body>
  112. </html>