【HTML】HTML动画时钟

打印 上一主题 下一主题

主题 1057|帖子 1057|积分 3175

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本日分享一个比力风趣的HTML动画时钟,感爱好的小伙伴可以自行上手体验一番,操作也非常简朴,如下:
1. 实操

实践操作步骤:

  • 创建一个文本文件 clock.txt
  • 将上述代码粘贴到 clock.txt 中。
  • 修改文件后缀,将文件生存为 clock.html(只要确保扩展名是 .html即可)。
  • 打开欣赏器在欣赏器的地址栏中,输入生存的HTML文件的路径或直接双击clock.html在欣赏器中打开它。
如果统统正常,应该可以看到一个显示当前时间的数字时钟。时钟会每秒更新一次,以显示最新的时间。
2. 源码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3.   <head>
  4.     <meta charset="UTF-8" />
  5.     <title>Clock</title>
  6.     <style>
  7.       html,
  8.       body {
  9.         width: 100%;
  10.         height: 100%;
  11.         margin: 0;
  12.         padding: 0;
  13.         background: linear-gradient(to right bottom, #7d7d7d, #070707);
  14.       }
  15.       li {
  16.         list-style: none;
  17.         height: 30px;
  18.         width: 30px;
  19.         margin: 0;
  20.         padding: 0;
  21.         font-size: 22ox;
  22.         line-height: 30px;
  23.         color: #bbbbbb;
  24.       }
  25.       .container {
  26.         width: 100%;
  27.         position: fixed;
  28.         top: 50%;
  29.         left: 50%;
  30.         z-index: 4;
  31.         transform: translate(-50%, -50%);
  32.       }
  33.       .clock {
  34.         display: flex;
  35.         flex-direction: row;
  36.         justify-content: space-around;
  37.         align-items: center;
  38.         width: 500px;
  39.         height: 30px;
  40.         margin: 50% auto;
  41.         background-color: #3b3b3b;
  42.         box-shadow: 2px 2px 10px 3px #2f2f2f;
  43.         transform: translateY(-50%);
  44.         border-radius: 20px;
  45.       }
  46.       .time-box {
  47.         width: 30px;
  48.         height: 100%;
  49.       }
  50.       .numbers {
  51.         background-color: #272727;
  52.         box-shadow: 2px 2px 10px 3px #2f2f2f;
  53.         text-align: center;
  54.         border-radius: 10px;
  55.         transition: all 0.5s;
  56.       }
  57.     </style>
  58.   </head>
  59.   <body>
  60.     <!-- partial:index.partial.html -->
  61.     <div class="container">
  62.       <div class="clock">
  63.         <div class="time-box">
  64.           <div class="numbers" id="hours-first">
  65.             <li>0</li>
  66.             <li>1</li>
  67.             <li>2</li>
  68.           </div>
  69.         </div>
  70.         <div class="time-box">
  71.           <div class="numbers" id="hours-second">
  72.             <li>0</li>
  73.             <li>1</li>
  74.             <li>2</li>
  75.             <li>3</li>
  76.             <li>4</li>
  77.             <li>5</li>
  78.             <li>6</li>
  79.             <li>7</li>
  80.             <li>8</li>
  81.             <li>9</li>
  82.           </div>
  83.         </div>
  84.         <div class="time-box">
  85.           <div class="numbers" id="minutes-first">
  86.             <li>0</li>
  87.             <li>1</li>
  88.             <li>2</li>
  89.             <li>3</li>
  90.             <li>4</li>
  91.             <li>5</li>
  92.           </div>
  93.         </div>
  94.         <div class="time-box">
  95.           <div class="numbers" id="minutes-second">
  96.             <li>0</li>
  97.             <li>1</li>
  98.             <li>2</li>
  99.             <li>3</li>
  100.             <li>4</li>
  101.             <li>5</li>
  102.             <li>6</li>
  103.             <li>7</li>
  104.             <li>8</li>
  105.             <li>9</li>
  106.           </div>
  107.         </div>
  108.         <div class="time-box">
  109.           <div class="numbers" id="seconds-first">
  110.             <li>0</li>
  111.             <li>1</li>
  112.             <li>2</li>
  113.             <li>3</li>
  114.             <li>4</li>
  115.             <li>5</li>
  116.           </div>
  117.         </div>
  118.         <div class="time-box">
  119.           <div class="numbers" id="seconds-second">
  120.             <li>0</li>
  121.             <li>1</li>
  122.             <li>2</li>
  123.             <li>3</li>
  124.             <li>4</li>
  125.             <li>5</li>
  126.             <li>6</li>
  127.             <li>7</li>
  128.             <li>8</li>
  129.             <li>9</li>
  130.           </div>
  131.         </div>
  132.       </div>
  133.     </div>
  134.     <!-- partial -->
  135.     <script>
  136.       const h1 = document.getElementById('hours-first');
  137.       const h2 = document.getElementById('hours-second');
  138.       const m1 = document.getElementById('minutes-first');
  139.       const m2 = document.getElementById('minutes-second');
  140.       const s1 = document.getElementById('seconds-first');
  141.       const s2 = document.getElementById('seconds-second');
  142.       let hour1 = 0,
  143.         hour2 = 0,
  144.         minute1 = 0,
  145.         minute2 = 0,
  146.         second1 = 0;
  147.       function handleNumber(num) {
  148.         if (num < 10) {
  149.           return [0, num];
  150.         } else {
  151.           return [Math.floor(num / 10), num % 10];
  152.         }
  153.       }
  154.       function changeTime() {
  155.         let time = new Date();
  156.         const [h_1, h_2] = handleNumber(time.getHours());
  157.         const [m_1, m_2] = handleNumber(time.getMinutes());
  158.         const [s_1, s_2] = handleNumber(time.getSeconds());
  159.         if (h_1 !== hour1) {
  160.           hour1 = h_1;
  161.           h1.style.transform = `translateY(-${hour1 * 30}px)`;
  162.         }
  163.         if (h_2 !== hour2) {
  164.           hour2 = h_2;
  165.           h2.style.transform = `translateY(-${hour2 * 30}px)`;
  166.         }
  167.         if (m_1 !== minute1) {
  168.           minute1 = m_1;
  169.           m1.style.transform = `translateY(-${minute1 * 30}px)`;
  170.         }
  171.         if (m_2 !== minute2) {
  172.           minute2 = m_2;
  173.           m2.style.transform = `translateY(-${minute2 * 30}px)`;
  174.         }
  175.         if (s_1 !== second1) {
  176.           second1 = s_1;
  177.           s1.style.transform = `translateY(-${second1 * 30}px)`;
  178.         }
  179.         s2.style.transform = `translateY(-${s_2 * 30}px)`;
  180.       }
  181.       setInterval(changeTime);
  182.     </script>
  183.   </body>
  184. </html>
复制代码
3. 源码剖析

以上这段代码是一个简朴的网页时钟,它使用HTML、CSS和JavaScript来显示当前时间。以下是对代码各部分的表明:
3.1 HTML部分:



  • <!DOCTYPE html>: 声明文档范例为HTML5。
  • <html lang="en">: HTML文档的根元素,指定语言为英语。
  • <head>: 包罗元数据和其他对页面有影响的元素。

    • <meta charset="UTF-8">: 设置字符编码为UTF-8。
    • <title>Clock</title>: 设置网页标题为"Clock"。
    • <style>: 包罗CSS样式,用于美化页面和结构。

  • <body>: 包罗网页的所有内容。

    • <div class="container">: 容器元素,用于居中显示时钟。

      • <div class="clock">: 时钟的主要容器,包罗显示时间的各个部分。

        • <div class="time-box">: 每个时间数字的容器。

          • <div class="numbers" id="...">: 包罗时间数字的列表,每个列表项代表一个数字。

            • <li>: 列表项,显示单个数字。





3.2 CSS部分:



  • 设置了页面的配景、字体、颜色、结构和动画效果。
  • .container 类使得时钟在页面中居中显示。
  • .clock 类界说了时钟的结构和样式。
  • .time-box 和 .numbers 类界说了时间数字的样式和动画效果。
3.3 JavaScript部分:



  • 获取显示小时、分钟和秒数的DOM元素。
  • handleNumber 函数:将时间数字分解为十位和个位。
  • changeTime 函数:获取当前时间,并更新时钟显示。

    • 使用 new Date() 获取当前时间。
    • 使用 handleNumber 函数处理小时、分钟和秒数。
    • 更新DOM元素的 transform 属性,以滚动显示精确的数字。

  • setInterval(changeTime, 1000);: 每秒调用 changeTime 函数,以更新时钟显示。
4. 功能总结:

这个网页时钟会显示当前的小时、分钟和秒数。每个时间单位(小时、分钟、秒)都由两个 <div> 元素组成,分别显示十位和个位数字。JavaScript代码负责及时更新这些数字,以反映当前时间。当时间变化时,相应的数字会通过CSS动画滚动更新。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表