倒计时css和js html代码,手把手教你利用CSS和JS创建一个倒数计时器

倒计时功能,在很多地方都会用到,我们平时都习惯去用一些插件来应用,会减少不少的工作量,并且效果也能达到预期。

我今天并不是想分享什么倒计时插件,而是自己写一个简单的倒数计时器,有兴趣的同学可以往下看看吧!

首先看下最终的功能,如图:

bbc78cd62d046b74977727b9ecab4613.png

默认进来,图片上的数字可以从10,逐渐减少到0,如果点击“RESET”,会重新执行。

技术

我们将让CSS处理动画,因为CSS动画在浏览器中的性能要比JavaScript处理动画高得多。创建倒数计时器的步骤如下:创建一堆数字

每秒创建一个JavaScript间隔

使用CSS变换移动数字堆栈

HTML

让我们从所有HTML开始。我们需要两个按钮以及所有10-0的数字。

👉

Next Episode Starts in

10

10

9

8

7

6

5

4

3

2

1

0

Reset

我们添加了带有表情符号的图标。我们也有一个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群咨询。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机端使用ghelper_Anki手机端使用指南(一)

【本篇会对如何使用手机端anki进行详解】有小伙伴询问在应用商店搜索anki找不到名字叫“anki”的软件,这里解释一下,在手机端的名字和电脑端的名字不太一样。安卓对应的名字叫做AnkiDroidIOS对应的名字叫做Ankimobile不过其实是一个软件,同步…

三甲医院his系统源码_三甲医院科研管理系统是什么,科研成果包括哪些

对于三甲医院来说,做科研管理系统必不可少的是数据收集,有一个方便的数据收集管理软件能记科研效率提高很多,那就是三甲医院科研管理系统,首先,我们先了解一下三甲医院科研管理系统是什么,科研成果包括哪些…

html的表格使用函数,从另一个HTML表格创建HTML表格的jQuery函数

我在页面上有一个HTML表格,我想用jQuery从中获取信息,清理/清理它,并创建一个新的“干净的”HTML表格信息。从另一个HTML表格创建HTML表格的jQuery函数我有表具有以下结构:Full Name123.456.7890456.789.0123OfficeTitleSuperviso…

git 创建邮箱 用户名_厉害了!IDEA中如何使用Git进行项目管理,完整教程来了?...

第一部分:安装1. 下载地址: https://git-scm.com/download/win如果速度慢, 使用 迅雷下载;2. 点击安装, 然后下一步, 直到下面这个页面:建议: 按照上面所示方式选中复选框 ;3. 点击下一步, 直到出现这个页面:建议: 这个页面是选择git使用的命令行, 建议使用第一个git自带的;4. …

程序员操作系统推荐_为什么程序员要会 Linux

(给伯乐在线加星标,看经典文章)作者:猫嗅花https://www.jianshu.com/p/5020fbd76d0c三大操作系统概述三大操作系统概述windows, macOS, linux是当今主流三大操作系统,普通用户一般是选择windows或macOS, linux主要是占据服务器领域市场。这三…

url中能出现的字符_网站URL配置4个技巧,轻松获得更多流量

对于刚入行的SEO新人,我们在做企业网站优化的时候,通常都是按照程序员设置的网站架构进行线上基础性内容的优化,特别是在使用一些固定CMS系统的时候,大量的站内URL都是配置固定的,很少有人去关注这方面对SEO的影响。那…

怎么修剪_幸福树怎么修剪——武汉花卉租摆

幸福树,一种寓意美好的观赏型植物,它生长非常迅速,稍不注意就长的非常茂盛。而要想保证幸福树的美貌,跟人的头发一样,我们要给它适当的修剪,那幸福树怎么修剪呢?为了大家能养出美丽的幸福树来&a…

mybatis传递多个参数_MyBatis 映射器

ps 一个用于生成MyBatis配置文件的插件 mybatis-generator使用方法呢, 是加入maven插件中 然后执行相关命令可以实现自动生成MyBatis配置文件自动映射首先编写无参的javabeanpackage com.ming.MyBatis.POJO;/** * author ming */public class Role { private int id; private S…

计算机软件水平考试什么题型,计算机软考考什么内容

原标题:计算机软考考什么内容计算机软考考试内容有哪些?软考包含三个级别,各级别有多个考试项目,不同的考试项目考试内容也是不同的。软考考试内容大家可以参考各考试项目的考试大纲,包括新版的系统分析师考试大纲、系…

mac os 开启redis_关于Redis,学会这8点就够了

一、redis是什么redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等场景。该数据库使用ANSI C语言编写,支持网络,提供字符串、哈希、列表、队列、集合结构直接存取,基于内存,可持久化。二…

python第八周小测验_Python语言程序设计第2周测验+练习题复盘

嘿,这里是目录! 练习网址 https://python123.io/index 测验2 单项选择题 1. 哪个选项不能正确引用turtle库进而使用setup()函数?‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬…

计算机设备管理器驱动,驱动技巧:解决设备管理器中声卡驱动安装不正确的问题...

分类:声卡驱动问题:设备管理器中声卡驱动安装不正确描述:电脑没有声音,有部分朋友是因为声卡驱动没有正确安装,除了我们常见到的设备管理器出现黄色感叹号之外,另一种情况就是让一般人很难发现的问题&#…

lisp对excel其他行列写入_【极简Python 自动化办公】Python写入Excel表格

【极简Python 自动化办公】Python写入Excel表格【极简Python 自动化办公】专栏是介绍如何利用python办公,减少工作负荷。篇幅精炼,内容易懂,无论是否有编程基础,都非常适合。在上次文章中,我们学习了【用python读取exc…

全国大学生计算机应用大赛有什么好处,我校学生喜获第十一届全国大学生计算机应用能力与信息素养大赛冠军...

2021年6月,第十一届全国大学生计算机应用能力与信息素养大赛通过腾讯会议视频全程监控在线作答的形式圆满结束。本届大赛共有来自117所院校932名选手参加全国总决赛。经过校园赛选拔,考前集训,我校共选出3名40本科班同学参加了该赛项&#xf…

java8 lambda map排序_Android兼容Java 8语法特性的原理分析

本文主要阐述了Lambda表达式及其底层实现(invokedynamic指令)的原理、Android第三方插件RetroLambda对其的支持过程、Android官方最新的dex编译器D8对其的编译支持。通过对这三个方面的跟踪分析,以Java 8的代表性特性——Lambda表达式为着眼点,将Android…

lrange是取出所有值并移除么_部落冲突:兵营容量提升,移除超级部队、英雄防御状态冷却时间...

爱生活,爱游戏,大家好,我是阿呆!部落冲突已经好长时间没更新了,这次秋天不再等待,部落冲突第二弹更新来袭,被称之为今年最赞的一次更新,感觉和我一起来看看吧!防御建筑升…

python爬取百度迁徙数据_python爬虫-动态爬取百度迁徙

#1.模拟浏览器发送请求 importrequestsimportjsonimportpandas as pd city_name[] province_name[] value[] url https://huiyan.baidu.com/migration/cityrank.jsonp?dtcountry&id0&typemove_in&date20200315&callbackjsonp_1590404076900_7186798rqrequests…

计算机系统硬盘内存主频,内存时序和频率_内存硬盘-中关村在线

内存时序和频率内存时序是描述内存条性能的一种参数,一般存储在内存条的SPD中。一般数字“A-B-C-D”分别对应的参数是“CL-tRCD-tRP-tRAS”,它们的含义依次为:CAS Latency(简称CL值)内存CAS延迟时间,它是内存的重要参数之一&#…

ubuntun系统mysql数据库同步_Canal 实现 Mysql数据库实时数据同步

简介1.1 canal介绍​ Canal是一个基于MySQL二进制日志的高性能数据同步系统。Canal广泛用于阿里巴巴集团(包括https://www.taobao.com),以提供可靠的低延迟增量数据管道,github地址:https://github.com/alibaba/canalC…

int数组初始化_Java数组

###理解数组Java的数组要求所有的元素为相同数据类型。既可以存储基本类型的数据,也可以存储引用类型的数据,只要所有元素的类型相同就可以。一旦数组的初始化完成,数组在内存中占用的空间就被固定下来,因此数组长度不可变&#x…