纯js+css实现在线时钟

实现在线时钟一般需要用到 JavaScript 和 CSS 进行布局和动画效果的实现。下面是实现纯 JS 和 CSS 的在线时钟的完整攻略。

步骤一:HTML 结构

时钟需要显示时、分、秒,因此需要一个容器来分别放置时钟的三个部分,容器可以使用一个 div 标签。

<div class="clock">
  <div class="hour"> </div>
  <div class="minute"> </div>
  <div class="second"> </div>
</div>

步骤二:CSS 样式

首先需要设置容器的基本样式,如背景颜色、宽度、高度、圆角等。然后使用相对定位 positions 让时、分、秒的部分可以根据容器定位,再使用 CSS3 的旋转变换让时、分、秒的针正确旋转。

.clock{
  background: #EFEFEF;
  width: 200px;
  height: 200px;
  border-radius: 50%;
  position: relative;
  margin: 50px auto;
}

.hour,
.minute,
.second {
  position: absolute;
  width: 8px;
  height: 8px;
  background: black;
  border-radius: 50%;
  transform-origin: bottom center;
}
.hour {
  height: 50px;
  width: 4px;
  background-color: #222;
  left: 95px;
  bottom: 100px;
}
.minute {
  height: 70px;
  width: 3px;
  background-color: #222222;
  left: 98px;
  bottom: 100px;
}
.second {
  height: 85px;
  width: 2px;
  background-color: #E74C3C;
  left: 99px;
  bottom: 100px;
}

步骤三:使用 JavaScript 更新时钟

使用 Date 对象获取当前的时、分、秒,通过计算当前时间中时、分、秒对应的度数,旋转时、分、秒针。

function clock(){
  var d = new Date();
  var hours = d.getHours();
  var minutes = d.getMinutes();
  var seconds = d.getSeconds();  

  var hourDeg = (hours * 30) + (0.5 * minutes);
  var minuteDeg = minutes * 6;
  var secondDeg = seconds * 6;

  $(".hour").css({"transform" : "rotate("+ hourDeg +"deg)"});
  $(".minute").css({"transform" : "rotate("+ minuteDeg +"deg)"});
  $(".second").css({"transform" : "rotate("+ secondDeg +"deg)"});
}

setInterval(clock, 1000); 

上面的 JavaScript 代码中,首先获取了当前时间的小时、分钟、秒数,然后计算出每个指针的旋转角度,最后通过 jQuery 处理样式变换,每秒钟一次更新时钟。

示例

下面是两个实现时钟的示例:

示例一

这个示例将时钟在页面中央居中,实现了响应式布局,时钟的大小会根据屏幕大小而改变。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>在线时钟</title>
  <style>
    body {
      background: #f2f2f2;
    }
    .container{
      max-width: 700px;
      margin: 0 auto;
    }
    .clock{
      background: #EFEFEF;
      width: 80%;
      height: 400px;
      max-width: 700px;
      border-radius: 50%;
      position: relative;
      margin: 50px auto;
    }
    .hour,
    .minute,
    .second {
      position: absolute;
      width: 8px;
      height: 8px;
      background: black;
      border-radius: 50%;
      transform-origin: bottom center;
    }
    .hour {
      height: 50px;
      width: 4px;
      background-color: #222;
      left: 50%;
      margin-left: -2px;
      bottom: 200px;
    }
    .minute {
      height: 70px;
      width: 3px;
      background-color: #222;
      left: 50%;
      margin-left: -1.5px;
      bottom: 200px;
    }
    .second {
      height: 85px;
      width: 2px;
      background-color: #E74C3C;
      left: 50%;
      margin-left: -1px;
      bottom: 200px;
    }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
  <div class="container">
    <div class="clock">
      <div class="hour"></div>
      <div class="minute"></div>
      <div class="second"></div>
    </div>
  </div>
  <script>
    function clock(){
      var d = new Date();
      var hours = d.getHours();
      var minutes = d.getMinutes();
      var seconds = d.getSeconds();

      var hourDeg = (hours * 30) + (0.5 * minutes);
      var minuteDeg = minutes * 6;
      var secondDeg = seconds * 6;

      $(".hour").css({"transform" : "rotate("+ hourDeg +"deg)"});
      $(".minute").css({"transform" : "rotate("+ minuteDeg +"deg)"});
      $(".second").css({"transform" : "rotate("+ secondDeg +"deg)"});
    }

    setInterval(clock, 1000);
  </script>
</body>
</html>

示例二

这个示例将时钟放在页面的右下角,同时调整了时钟的颜色和大小。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>在线时钟</title>
  <style>
    body {
      background: #f2f2f2;
    }
    .clock{
      background: #222;
      width: 200px;
      height: 200px;
      border-radius: 50%;
      position: fixed;
      bottom: 25px;
      right: 25px;
    }
    .hour,
    .minute,
    .second {
      position: absolute;
      width: 8px;
      height: 8px;
      background: white;
      border-radius: 50%;
      transform-origin: bottom center;
    }
    .hour {
      height: 60px;
      width: 5px;
      background-color: #eaeaea;
      left: 95px;
      bottom: 100px;
    }
    .minute {
      height: 80px;
      width: 3px;
      background-color: #eaeaea;
      left: 98px;
      bottom: 100px;
    }
    .second {
      height: 100px;
      width: 2px;
      background-color: #e74c3c;
      left: 99px;
      bottom: 100px;
    }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head>
<body>
  <div class="clock">
    <div class="hour"></div>
    <div class="minute"></div>
    <div class="second"></div>
  </div>
  <script>
    function clock(){
      var d = new Date();
      var hours = d.getHours();
      var minutes = d.getMinutes();
      var seconds = d.getSeconds();

      var hourDeg = (hours * 30) + (0.5 * minutes);
      var minuteDeg = minutes * 6;
      var secondDeg = seconds * 6;

      $(".hour").css({"transform" : "rotate("+ hourDeg +"deg)"});
      $(".minute").css({"transform" : "rotate("+ minuteDeg +"deg)"});
      $(".second").css({"transform" : "rotate("+ secondDeg +"deg)"});
    }

    setInterval(clock, 1000);
  </script>
</body>
</html>

以上是使用纯 JS 和 CSS 实现在线时钟的攻略,你可以根据自己的需要,自行调整时钟的颜色、大小、位置和样式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:纯js+css实现在线时钟 - Python技术站

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

相关文章

  • 如何用JS模拟实现数组的map方法

    下面是使用JS模拟实现数组的map方法的完整攻略。 原理分析 Array.map() 方法可以对数组中的每个元素进行操作,生成一个新的数组,而不会改变原来的数组。其原理实际上就是循环遍历数组,每次将当前元素作为参数传入回调函数中进行操作,并将返回值存入新的数组中。 实现步骤 创建一个函数,命名为myMap。该函数需要两个参数,第一个参数是需要进行操作的数组,…

    JavaScript 2023年5月27日
    00
  • JS 中可以提升幸福度的小技巧(可以识别更多另类写法)

    当谈到 JavaScript 的小技巧时,常见的技巧有短路求值、三元表达式等。但本文将介绍更多不常见的技巧,可以提高编码效率,减少代码量。 1. 使用 null 判断空值 当需要判断一个变量是否为空值时,我们通常会采用如下方式: if (x === ” || x === null || x === undefined) { // do something …

    JavaScript 2023年6月10日
    00
  • 使用JavaScript检测Firefox浏览器是否启用了Firebug的代码

    要使用JavaScript检测Firefox浏览器是否启用了Firebug,可以通过以下步骤进行操作: 使用navigator.userAgent属性获取当前浏览器的信息。 var isFirefox = navigator.userAgent.indexOf("Firefox") > -1; 判断当前浏览器是否为Firefox浏览…

    JavaScript 2023年6月10日
    00
  • javascript 使用sleep函数的常见方法详解

    让我来详细讲解一下 “javascript 使用sleep函数的常见方法详解” 的完整攻略。 什么是sleep函数? 在JavaScript中,本质上并没有自带的sleep函数。它是一种同步执行的函数,能够在程序执行到该函数时阻塞线程一段时间,然后再继续执行。 常见的sleep实现方法 在JavaScript中实现sleep函数的方法有很多,这里介绍两个常见…

    JavaScript 2023年5月27日
    00
  • Javascript如何递归遍历本地文件夹

    在JavaScript中遍历本地文件夹可以使用Node.js的文件系统(fs)模块,递归遍历需要使用递归函数来实现。 以下是完整攻略: 1. 安装Node.js 在开发环境中,需要安装最新版的Node.js来执行JavaScript代码。Node.js可以在官网上下载:https://nodejs.org/。 2. 引入fs模块 在Node.js中,提供了一…

    JavaScript 2023年5月27日
    00
  • JavaScript使用localStorage存储数据

    以下是使用localStorage存储数据的完整攻略。 什么是localStorage? localStorage是一种客户端存储数据的方式,它可以在客户端本地存储数据,是一个只有浏览器端可以访问的本地存储器。localStorage可以使网页在下一次访问时获取我们之前保存的数据。 localStorage的使用步骤 1. 存储数据 在JavaScript中…

    JavaScript 2023年6月11日
    00
  • JavaScript实现sleep睡眠函数的几种简单方法总结

    我来详细讲解一下“JavaScript实现sleep睡眠函数的几种简单方法总结”的完整攻略。 1. 睡眠函数实现原理 在JavaScript中没有sleep方法,但是我们可以通过模拟睡眠来实现这个功能。JavaScript是单线程处理的,所以这里的模拟睡眠等待其实就是让线程休眠一段时间,然后再继续执行下面的代码。 2. setTimeout和Promise方…

    JavaScript 2023年5月28日
    00
  • JavaScript数组方法实例详解

    关于“JavaScript数组方法实例详解”的攻略,我来为你详细讲解一下。 目录 JavaScript数组方法介绍 JavaScript数组方法实例详解 1. push() 方法 2. pop() 方法 结语 JavaScript数组方法介绍 JavaScript 中的数组是一种特殊的对象,它可以存储多个值,并且可以方便地进行增删改查等操作。在 JavaSc…

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