通过HTML结构与CSS动画结合实现倒计时效果,1. 使用独立digit容器布局数字,2. Flex排版对齐并设计样式,3. @keyframes创建slideDown动画实现数字翻动,4. JavaScript动态更新数值并触发动画,最终达成简洁流畅的视觉效果。

想要用CSS制作一个简单又美观的倒计时效果,关键在于数字布局与@keyframes动画的结合。我们可以利用CSS animation 实现数字变化的视觉过渡,再通过合理的HTML结构和样式排版让倒计时清晰易读。
1. 基础HTML结构设计
倒计时通常包含天、时、分、秒四个部分。每个时间单位应独立封装,便于样式控制。
30:45:28
这种结构将每一位数字单独放在.digit中,中间用.separator做冒号分隔,方便对齐和动画处理。
2. 数字区域样式与布局
使用Flex布局让所有元素水平排列,并保持对齐。
立即学习“前端免费学习笔记(深入)”;
.countdown {
display: flex;
align-items: center;
font-family: 'Courier New', monospace;
font-size: 2rem;
gap: 2px;
}
.digit {
width: 40px;
height: 60px;
background: #333;
color: white;
display: flex;
align-items: center;
justify-content: center;
border-radius: 6px;
overflow: hidden;
}
.separator {
font-weight: bold;
color: #999;
}
每个.digit设定固定宽高,背景深色突出数字,圆角增加现代感。使用overflow: hidden为后续动画裁剪做准备。
3. 使用@keyframes实现数字下落动画
要模拟数字“翻动”效果,可以创建一个垂直位移的动画,让新数字从上方滑入。
@keyframes slideDown {
from {
transform: translateY(-100%);
}
to {
transform: translateY(0);
}
}
.digit span {
display: block;
animation: slideDown 0.5s ease-in-out;
}
当JavaScript更新数字时,给span添加该动画类,就能看到数字“掉落”进入视图的效果。每次数值变更可重新触发动画。
4. 配合JavaScript动态更新(可选)
CSS负责视觉表现,实际倒计时逻辑仍由JavaScript驱动。例如:
function updateCountdown(endTime) {
const now = new Date();
const diff = endTime - now;
const seconds = Math.floor(diff / 1000 % 60);
const minutes = Math.floor(diff / 1000 / 60 % 60);
const hours = Math.floor(diff / 1000 / 60 / 60 % 24);
// 更新DOM并添加动画类
document.querySelectorAll('.digit')[4].innerHTML =
${Math.floor(seconds/10)};
}
每次更新数字时插入带动画的span,即可实现动态翻页效果。
基本上就这些。通过合理布局+CSS动画,就能做出简洁流畅的倒计时界面,不复杂但容易忽略细节如对齐和动画节奏。调整duration和easing能让效果更自然。










