当前位置:首页 > 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)));
}

添加数字显示:

<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

制作css

CSS基础语法 CSS规则由选择器和声明块组成。选择器指向需要设置样式的HTML元素,声明块包含一个或多个用分号分隔的声明。每个声明由属性和值组成,用冒号分隔。 选择器 { 属性: 值; 属…

css 制作表格

css 制作表格

基础表格结构 使用HTML的<table>标签创建表格框架,搭配<tr>(行)、<th>(表头)和<td>(单元格)标签。例如: <table&…

css制作图片

css制作图片

CSS 制作图片的方法 使用 background-image 属性 通过 background-image 属性可以为元素设置背景图片。这种方法适用于将图片作为背景而非内容的一部分。 .elem…

css div 制作导航菜单

css div 制作导航菜单

基本导航菜单结构 使用HTML创建一个简单的导航菜单结构,通常使用<ul>和li>列表实现。每个菜单项用<a>标签包裹以实现链接功能。 <div class="…

css网页制作教程下载

css网页制作教程下载

CSS网页制作教程下载资源推荐 免费在线教程平台 W3Schools(www.w3schools.com/css/)提供交互式CSS教程,涵盖基础到高级内容,支持在线练习。 MDN Web Docs(…

vue制作css

vue制作css

在Vue中制作CSS的方法 Vue提供了多种灵活的方式来编写和管理CSS,可以根据项目需求选择适合的方法。 使用内联样式 内联样式可以直接在Vue组件的模板中编写,适用于简单的样式需求。 &l…