手把手教你利用CSS和JS创建一个倒数计时器 - Web前端
作者:98wpeu发布时间:2026-09-16分类:网页前端技术浏览:2
倒计时功能,在很多地方都会用到,我们平时都习惯去用一些插件来应用,会减少不少的工作量,并且效果也能达到预期。
我今天并不是想分享什么倒计时插件,而是自己写一个简单的倒数计时器,有兴趣的同学可以往下看看吧!
首先看下最终的功能,如图:

默认进来,图片上的数字可以从10,逐渐减少到0,如果点击“RESET”,会重新执行。
技术
我们将让CSS处理动画,因为css动画在浏览器中的性能要比javascript处理动画高得多。创建倒数计时器的步骤如下:
创建一堆数字
每秒创建一个JavaScript间隔
使用CSS变换移动数字堆栈
html
让我们从所有HTML开始。我们需要两个按钮以及所有10-0的数字。
<div> <button class="next"> <span class="icon">👉</span> Next Episode Starts in <span class="countdown"> 10 <span class="numbers"> <span>10</span> <span>9</span> <span>8</span> <span>7</span> <span>6</span> <span>5</span> <span>4</span> <span>3</span> <span>2</span> <span>1</span> <span>0</span> </span> </span> </button> <button class="reset">Reset</button></div>
我们添加了带有表情符号的图标。我们也有一个countdown将包含我们的numbers。
我们拥有倒数div的原因是我们可以10在其中放置一个。这10个负责在我们的UI中为我们的用户提供一些空间numbers。文件流中将有空间。
我们将不得不numbers绝对定位,这将使它们脱离文档流。
CSS
让我们开始我们的CSS。
基本样式
我们为按钮设置了一些基本样式,以使其看起来不错:
/_ button styles are here _/
button {
background: white;
border-radius: 5px;
border: none;
padding: 15px 30px;
font-size: 24px;
font-family: 'Muli';
display: block;
text-transform: uppercase;
letter-spacing: 2px;
cursor: pointer;
transition: 0.3s ease all;
line-height: 1;
display: flex;}button:hover {
background: #eee;}.icon {
margin-right: 8px;}.reset {
font-size: 12px;
padding: 8px 16px;
margin: 100px auto 0;}现在,我们将提供一些美观的按钮。下一步是开始定位我们的数字,以便它们显示在列中。
自定义字体
我们从fonts.google.com找到了自定义字体,并将链接添加到我们的codePen设置中:
https://fonts.GoogleAPIs.com/css?family=Muli&display=swap
倒数和数字的定位
将以下内容添加到我们的CSS中。
.countdown {
position: relative;
display: block;
text-indent: -9999px;
overflow: hidden;
margin-left: 6px;}.numbers {
position: absolute;
top: 0;
left: 0;
text-align: center;
transition: 0.3s ease transFORM;
text-indent: 0;}我们将countdown区域设置为,overflow: hidden以便看不见其视野之外的任何数字。我们现在看到的只是一个数字。
看看没有以下内容的幕后情况overflow: hidden:
使用overflow: hidden,我们所有的额外数字都从视图中隐藏:
让我们进入我们的Javascript。
javascript
这是开始每秒移动数字的工作所在。
创建变量
首先,从DOM中获取所需的一切并创建变量。
// grab parts of our HTML
const countdownArea = document.querySelector('.countdown');
const numbersArea = document.queryselector('.numbers');
const resetBTn = document.querySelector('.reset');
// create an interval and counter
let interval;
let count = 0;
// calculate the height of our numbers
const height = countdownArea.getBoundingclientRect().height;创建一个计时器
接下来,我们将创建一个用于创建计时器的函数。我们需要做的事情是:
增加我们的
count使用
count和height找出数字列表的偏移量offset通过CSS转换将新内容应用于数字部分确保到达10点后停止间隔
// create the interval that creates the timerfunction createTimer() {
interval = SetInterval(() => {
// 1. increment our count
count++;
// 2. calculate the offset and apply it
const offset = height * count;
// 3. APPly the offset using css transforms
numbersArea.style.transForm = `translateY(-${offset}px)`
// 4. stop the interval at 10
if (count >= 10) {
// go to the next episode
clearInterval(interval);
}
}, 1000);}最后一部分是实际调用我们的新函数。添加以下内容,我们的计时器应该开始工作了!
createTimer();
添加重置
最后一部分是添加重置。我们将使用之前抓取的重置按钮:
resetBtn.addEventListener('click', createTimer);我们必须在createTimer函数中添加三行以重置所有内容:
function createTimer() {
clearInterval(interval);
count = 0;
numbersArea.style.transform = 'translateY(0)'
// other Code goes here...
// interval = setInterval(() => {...
}总结
有兴趣的童鞋可以去试试吧~~~如果有疑问可以加QQ群咨询。
相关推荐
- 疫情过后,哪些行业会爆发?哪些行业更容易赚钱? - Web前端
- 微信“视频号”来袭,会成为下一个流量风口?附开通流程 - Web前端
- 新版的chrome谷歌浏览器如何重启flash功能应用 - Web前端
- 22个用于Web开发的最佳Visual Studio代码扩展插件 - Web前端
- 简单的了解下this关键字常用的基础应用 - Web前端
- Vue应用程序中无限滚动的交点观察器 - Web前端
- 前端开发:JavaScript中的代理和生成器 - Web前端
- Web前端开发:介绍下三种页面之间的传值方法 - Web前端
- 如何在chrome里打印(console)获取数据并转换成json格式 - Web前端
- Web前端vue开发:在表单验证中输入姓名时引发的“奇案” - Web前端
- 网页前端技术排行
-
- 1[Web前端]用javascript实现默认图片替代未显示的图片 - Web前端
- 2分析Iconfont-阿里巴巴矢量常用图标库 - Web前端
- 3jQuery实例教程:制作网页中可折叠的面板 - Web前端
- 4【第六章】Foundation之按钮和下拉功能 - Web前端
- 5基于jquery的滚动条滚动固定div(附演示下载) - Web前端
- 6jQuery编写widget的一些技巧分享 - Web前端
- 7分享精心挑选的12款优秀jQuery Ajax分页插件和教程 - Web前端
- 8jQuery实现鼠标移到元素上动态提示消息框效果 - Web前端
- 9在Mac/PC上远程调试iPhone/iPad上的网页 - Web前端
- 最近发表
-
- WordPress随机显示特色图片插件:Random Post Thumbnails
- KeePass实现Chrome浏览器自动填充密码方法一
- LNMP一键包nginx 301强制跳转到https教程
- KeePass实现Chrome浏览器自动填充密码方法二
- #建站# 免费的VPS管理软件Xshell8/Xftp8中文版下载
- 使用Xshell 8连接VPS教程_电脑登录vps的方法
- WordPress评论界面添加烟花????效果
- 不同浏览器书签同步方案:坚果云+Floccus_详细使用教程
- iOS端KeePassXC客户端APP:Strongbox Password Safe
- 给WordPress评论中的Gravatar头像图片添加ALT属性


