…">
当前位置:首页 > CSS

css3制作时钟

2026-02-26 21:38:24CSS

CSS3 制作时钟

使用 CSS3 和少量 JavaScript 可以创建一个动态的时钟。以下是实现步骤和代码示例:

时钟的 HTML 结构

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

时钟的 CSS 样式

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

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

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

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

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

.center-dot {
  position: absolute;
  width: 12px;
  height: 12px;
  background: #333;
  border-radius: 50%;
  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(); // 初始化时钟

添加时钟刻度

如果需要更真实的时钟效果,可以添加刻度:

.clock::after {
  content: '';
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  background: 
    linear-gradient(0deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(30deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(60deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(90deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(120deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(150deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(180deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(210deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(240deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(270deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(300deg, transparent 45%, #333 45%, #333 55%, transparent 55%),
    linear-gradient(330deg, transparent 45%, #333 45%, #333 55%, transparent 55%);
}

动画效果优化

为秒针添加平滑过渡效果:

css3制作时钟

.second-hand {
  transition: transform 0.2s cubic-bezier(0.4, 2.3, 0.3, 1);
}

将以上代码整合到 HTML 文件中,即可实现一个完整的 CSS3 时钟。时钟会每秒自动更新,显示当前时间。

标签: 时钟
分享给朋友:

相关文章

css怎么制作时钟

css怎么制作时钟

使用CSS制作时钟 使用CSS和少量JavaScript可以制作一个简单的时钟。以下是实现方法: 基本HTML结构 <div class="clock"> <div cla…

css制作小时钟

css制作小时钟

使用CSS制作小时钟 制作一个纯CSS的小时钟需要结合HTML结构、CSS样式以及少量JavaScript来实现动态效果。以下是具体实现方法: HTML结构 创建一个包含时钟表盘、时针、分针和秒针的…

vue实现简易时钟

vue实现简易时钟

使用 Vue 实现简易时钟 以下是基于 Vue 3 实现简易时钟的两种方法: 方法一:使用 Composition API <template> <div class="clo…

vue 实现时钟

vue 实现时钟

使用 Vue 实现时钟 基础实现 创建一个 Vue 组件,利用 data 和 methods 实现动态时钟。通过 setInterval 每秒更新当前时间。 <template> &…

vue前端实现时钟

vue前端实现时钟

实现基础时钟功能 使用Vue的响应式特性结合Date对象实时更新时间。在组件的data中定义time变量,通过setInterval每秒更新一次时间。 <template> &l…

vue watch 实现时钟

vue watch 实现时钟

使用 Vue 的 watch 实现时钟 在 Vue 中,可以通过 watch 监听时间变化来实现一个实时更新的时钟。以下是具体实现方法: 方法一:使用 setInterval 和 watch 定义…