当前位置:首页 > CSS

css制作时钟

2026-02-26 20:36:47CSS

CSS 制作时钟的方法

使用 CSS 和少量 JavaScript 可以制作一个动态时钟。以下是实现步骤:

HTML 结构

<div class="clock">
  <div class="hour-hand"></div>
  <div class="minute-hand"></div>
  <div class="second-hand"></div>
  <div class="center"></div>
</div>

CSS 样式

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

.hour-hand, .minute-hand, .second-hand {
  position: absolute;
  background-color: #333;
  transform-origin: bottom center;
  left: 50%;
  top: 50%;
}

.hour-hand {
  width: 6px;
  height: 50px;
  margin-left: -3px;
  margin-top: -50px;
}

.minute-hand {
  width: 4px;
  height: 70px;
  margin-left: -2px;
  margin-top: -70px;
}

.second-hand {
  width: 2px;
  height: 80px;
  margin-left: -1px;
  margin-top: -80px;
  background-color: red;
}

.center {
  width: 12px;
  height: 12px;
  background-color: #333;
  border-radius: 50%;
  position: absolute;
  left: 50%;
  top: 50%;
  margin-left: -6px;
  margin-top: -6px;
}

JavaScript 动画

function updateClock() {
  const now = new Date();
  const hours = now.getHours() % 12;
  const minutes = now.getMinutes();
  const seconds = now.getSeconds();

  const hourDegrees = (hours * 30) + (minutes * 0.5);
  const minuteDegrees = minutes * 6;
  const secondDegrees = seconds * 6;

  document.querySelector('.hour-hand').style.transform = `rotate(${hourDegrees}deg)`;
  document.querySelector('.minute-hand').style.transform = `rotate(${minuteDegrees}deg)`;
  document.querySelector('.second-hand').style.transform = `rotate(${secondDegrees}deg)`;
}

setInterval(updateClock, 1000);
updateClock();

实现原理

时钟的圆形外观通过 CSS 的 border-radius: 50% 实现。指针使用绝对定位,并通过 transform-origin 设置旋转中心在底部中间。

JavaScript 部分计算当前时间对应的角度:

  • 每小时30度(360°/12小时)
  • 每分钟6度(360°/60分钟)
  • 每秒6度(360°/60秒)
  • 时针每分钟额外移动0.5度(30°/60分钟)

进阶优化

添加时钟刻度:

.clock::before {
  content: '';
  position: absolute;
  width: 4px;
  height: 15px;
  background-color: #333;
  left: 50%;
  top: 10px;
  margin-left: -2px;
  transform-origin: bottom center;
}

/* 添加12个刻度 */
.clock {
  counter-reset: ticks 12;
}
.clock::before {
  counter-increment: ticks -1;
  transform: rotate(calc(30deg * var(--i)));
}

添加数字显示:

css制作时钟

<div class="clock-number" style="--i:1">3</div>
<div class="clock-number" style="--i:2">6</div>
<div class="clock-number" style="--i:3">9</div>
<div class="clock-number" style="--i:4">12</div>
.clock-number {
  position: absolute;
  font-size: 16px;
  color: #333;
  transform: translate(-50%, -50%) rotate(calc(30deg * var(--i)));
}

这个实现展示了如何用纯 CSS 和少量 JavaScript 创建一个功能完整的模拟时钟。可以根据需要调整样式和动画效果。

标签: 时钟css
分享给朋友:

相关文章

css导航条制作

css导航条制作

基础导航条制作 使用HTML的无序列表<ul>和CSS的display: flex属性可以快速创建横向导航条。HTML结构通常包含导航链接列表,CSS负责样式和布局。 <nav&g…

css 制作石头

css 制作石头

使用CSS制作石头效果 通过CSS的border-radius、box-shadow和background属性可以模拟石头的自然外观。以下是一个简单实现: <div class="stone"…

css制作钢琴块

css制作钢琴块

使用CSS制作钢琴块 钢琴块可以通过HTML和CSS的配合实现,主要利用flexbox布局和伪元素来模拟钢琴的黑白键排列。 HTML结构 <div class="piano"> &l…

用css制作下拉菜单

用css制作下拉菜单

使用纯CSS制作下拉菜单 HTML结构 基础的下拉菜单需要嵌套的HTML结构,通常使用<ul>和<li>标签实现层级关系: <div class="dropdown"&…

使用css制作同心圆

使用css制作同心圆

使用 CSS 制作同心圆 同心圆可以通过嵌套多个圆形元素并利用 CSS 的定位和样式属性实现。以下是几种常见方法: 方法一:使用绝对定位和多个 div 通过嵌套多个 div 元素,设置相同的圆心位置…

css制作三角形

css制作三角形

使用边框制作三角形 通过设置元素的宽度和高度为0,并利用边框属性,可以创建不同方向的三角形。例如,要创建一个向下的三角形: .triangle-down { width: 0; height…