纯js+css实现在线时钟

yizhihongxing

实现在线时钟一般需要用到 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日

相关文章

  • javascript中parseInt()函数的定义和用法分析

    下面我就来为你介绍一下JavaScript中parseInt()函数的定义和用法分析。 1. 定义 parseInt()是JavaScript中的一个全局函数,用于将字符串解析成整数。该函数接收两个参数:要转换为整数的字符串和一个可选的进制数,表示要解析的字符串是几进制的。如果不提供进制数,则默认采用十进制。 2. 用法分析 2.1 解析十进制 下面是一个解…

    JavaScript 2023年5月27日
    00
  • js 取时间差去掉周六周日实现代码

    要计算时间差并去掉周六周日,我们可以使用 JavaScript 内置的 Date 对象,它提供了许多方法来处理日期和时间。以下是实现这个功能的步骤: 获取开始时间和结束时间的 Date 对象。 我们可以使用 Date 对象的构造函数来创建具有指定日期和时间的日期对象。例如,我们可以这样创建一个代表 2021 年 1 月 1 日的 Date 对象:new Da…

    JavaScript 2023年5月27日
    00
  • Javascript valueOf 方法

    以下是关于JavaScript valueOf方法的完整攻略。 JavaScript valueOf方法 JavaScript valueOf方法是所有JavaScript对象的一个方法,用于返回对象的原始值。对于Number对象,方法返回对象的原数字值。 下面是一个使用valueOf方法的示例: var num = new Number(123); con…

    JavaScript 2023年5月11日
    00
  • HTML+JavaScript实现扫雷小游戏

    项目准备要实现HTML+JavaScript的扫雷小游戏,需要先准备好游戏界面,以及相关的代码和算法。首先,需要绘制游戏地图,并放置相应的地雷。接着,需要通过JavaScript编写游戏逻辑和算法,并在对应的HTML文件中引用相应的JS脚本和CSS样式表,以配置游戏的界面和交互组件。需要注意的是,在引用JS脚本的过程中,应该采用外链方式,而不是直接嵌入到HT…

    JavaScript 2023年5月28日
    00
  • 探讨:JavaScript ECAMScript5 新特性之get/set访问器

    探讨:JavaScript ECMA Script 5 新特性之 get/set 访问器 简介 ECMA-262 第五版(ECMA Script 5)是 JavaScript 编程语言的最新发布的标准,它包含了一些新的语法以及 ECMAScript 3 上的扩展。 其中一个新增的重要特性是 get 和 set 访问器,这两个方法提供了一种对象属性的访问方式,…

    JavaScript 2023年6月10日
    00
  • js实现下载(文件流式)方法详解与完整实例源码

    首先,需要明确一点,下载文件大多数情况下需要后端接口进行配合,前端只需要向后端发起下载请求即可。本文介绍的js实现文件下载,是通过向后端接口发起请求获取文件流,再通过js实现文件的下载。 如何下载文件 实现文件下载的方式有很多,其中一种较为简单的方式是使用a标签进行下载。例如: <a href="http://example.com/file…

    JavaScript 2023年5月27日
    00
  • JavaScript与JQuery框架基础入门教程

    JavaScript与JQuery框架基础入门教程 什么是JavaScript? JavaScript 是一种编程语言,通常用于在网页上添加交互性和动态性。不像 HTML 和 CSS,JavaScript 是一种脚本语言,它需要通过浏览器来解释和执行。JavaScript 是一种非常流行的编程语言,它的使用广泛,可用于开发网页、移动应用、游戏等。 JavaS…

    JavaScript 2023年5月18日
    00
  • javascript表单事件处理方法详解

    JavaScript表单事件处理方法详解 什么是表单事件 表单事件是指当用户与表单元素交互时,浏览器会触发一些事件以响应用户的行为。表单事件可以是用户输入、用户点击、用户提交表单等等。 常见的表单事件 以下是一些常见的表单事件: focus:当元素获得焦点时 blur:当元素失去焦点时 change:当元素值发生改变时 keydown、keyup:按下或松开…

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