如何用CSS实现倒计时效果

来源:IT编程作者:多肉头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何用CSS实现倒计时效果》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何用CSS实现倒计时效果》有用,将其分享出去将是对创作者最好的鼓励。

纯CSS实现倒计时效果不需要依赖JavaScript逻辑,仅通过CSS的动画和样式控制就能完成,适合轻量化的倒计时展示场景,实现方式主要分为数字递减和环形进度两种类型。

如何用CSS实现倒计时效果

方案一:数字递减倒计时

这种方案的核心是借助CSS的@keyframes动画和counter计数器,实现数字从指定值逐步递减的效果。实现步骤如下:

1. 基础HTML结构

<div class="countdown">
  <span class="countdown-number"></span>
</div>

2. CSS样式与动画定义

首先定义计数器的初始值和动画逻辑,通过animation控制计数器每秒递减一次,同时配合content属性展示当前计数值。

/* 定义计数器,初始值为10 */
.countdown {
  counter-reset: countdown 10;
}

/* 数字展示样式 */
.countdown-number::before {
  content: counter(countdown);
  font-size: 48px;
  font-weight: bold;
  color: #333;
  /* 绑定动画,10秒完成10次递减,每个周期1秒 */
  animation: countdown-animation 10s steps(10) forwards;
}

/* 定义关键帧动画,每次递减计数器值 */
@keyframes countdown-animation {
  0% {
    counter-reset: countdown 10;
  }
  10% {
    counter-reset: countdown 9;
  }
  20% {
    counter-reset: countdown 8;
  }
  30% {
    counter-reset: countdown 7;
  }
  40% {
    counter-reset: countdown 6;
  }
  50% {
    counter-reset: countdown 5;
  }
  60% {
    counter-reset: countdown 4;
  }
  70% {
    counter-reset: countdown 3;
  }
  80% {
    counter-reset: countdown 2;
  }
  90% {
    counter-reset: countdown 1;
  }
  100% {
    counter-reset: countdown 0;
  }
}

实现原理说明

这里通过steps(10)将10秒的动画分成10个等长的阶段,每个阶段对应一次计数器递减,forwards属性保证动画结束后保持最后的状态。如果需要调整倒计时总时长,只需要修改动画总时长和steps的参数即可,比如5秒倒计时就设置为5s steps(5) forwards

方案二:环形进度倒计时

环形倒计时常用于活动开场、页面加载等场景,核心是通过两个半圆元素的旋转配合clip-path裁剪实现进度效果,同时结合数字展示剩余时间。

1. HTML结构

<div class="ring-countdown">
  <div class="ring-left"></div>
  <div class="ring-right"></div>
  <div class="ring-number">10</div>
</div>

2. CSS样式实现

首先构建环形基础样式,左右两个半圆分别负责前半段和后半段的旋转,数字部分通过动画同步更新。

/* 环形容器 */
.ring-countdown {
  width: 200px;
  height: 200px;
  position: relative;
  margin: 40px auto;
}

/* 左右半圆基础样式 */
.ring-left, .ring-right {
  width: 200px;
  height: 200px;
  border-radius: 50%;
  position: absolute;
  top: 0;
  left: 0;
  clip-path: polygon(50% 50%, 50% 0, 100% 0, 100% 100%, 50% 100%);
}

/* 右半圆初始隐藏,负责0-50%的进度 */
.ring-right {
  clip-path: polygon(50% 50%, 50% 0, 0 0, 0 100%, 50% 100%);
  opacity: 0;
}

/* 左半圆进度动画,前5秒旋转180度 */
.ring-left {
  background: #409eff;
  animation: left-rotate 5s linear forwards;
}

/* 右半圆进度动画,后5秒旋转180度 */
.ring-right {
  background: #409eff;
  animation: right-rotate 5s linear 5s forwards;
}

/* 数字展示 */
.ring-number {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 36px;
  font-weight: bold;
  color: #333;
  animation: number-change 10s steps(10) forwards;
}

/* 左半圆旋转关键帧 */
@keyframes left-rotate {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(180deg);
  }
}

/* 右半圆旋转关键帧 */
@keyframes right-rotate {
  0% {
    opacity: 1;
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(180deg);
  }
}

/* 数字变化关键帧 */
@keyframes number-change {
  0% { content: "10"; }
  10% { content: "9"; }
  20% { content: "8"; }
  30% { content: "7"; }
  40% { content: "6"; }
  50% { content: "5"; }
  60% { content: "4"; }
  70% { content: "3"; }
  80% { content: "2"; }
  90% { content: "1"; }
  100% { content: "0"; }
}

注意事项

这种环形方案的总时长是10秒,前半段5秒由左半圆完成180度旋转,后半段5秒由右半圆完成旋转,两个半圆的动画时间需要衔接准确。如果需要调整环形颜色、大小,只需要修改对应元素的backgroundwidthheight属性即可。

两种方案的适用场景

数字递减倒计时实现简单,适合只需要展示数字变化的轻量场景,比如验证码倒计时、简单活动倒计时。环形进度倒计时视觉效果更丰富,适合需要突出视觉感知的场景,比如活动开场、页面加载等待提示。

纯CSS实现的倒计时存在局限性,比如无法精准对应真实时间,页面切到后台时动画可能会暂停,如果需要高精度的倒计时,还是建议结合JavaScript的时间逻辑来实现。

CSS倒计时animationtransformkeyframes修改时间:2026-06-13 20:54:33

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。