Flipping Countdown Clock With JavaScript And CSS – countDown.js
| AUTHOR: | Dazix |
|---|---|
| VIEWS TOTAL: | 3,478 views |
| OFFICIAL PAGE: | Go to website |
| LAST UPDATE: | July 29, 2020 |
| LICENSE: | MIT |
Preview:

Description:
countDown.js is a dependency-free JavaScript library for creating a countdown or count up timer just like thretro-lookingng flip clock.
How to use it:
Create a container element to place the countdown clock.
<div class="container"></div>
Download and place the JavaScript file ‘countDown.js’ at the bottom of the webpage.
<script src="countDown.js"></script>
Initialize the countDown.js and specify the end date you want to count to.
var cd = new Countdown({
cont: document.querySelector('.container'),
endDate: 1553468400000,
outputTranslation: {
year: 'Years',
week: 'Weeks',
day: 'Days',
hour: 'Hours',
minute: 'Minutes',
second: 'Seconds',
},
endCallback: null,
outputFormat: 'week|day|hour|minute|second',
});Style the countdown clock in the CSS.
.countDown_cont {
font-family: Lato, Arial, Gadget, sans-serif;
font-size: 13px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
color: #333;
}
.countDown_interval_cont {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-pack: distribute;
justify-content: space-around;
width: auto;
}
.countDown_interval_cont:nth-child(n+1):not(:last-child) { margin-right: 1em; }
.countDown_interval_basic_cont {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
}
.countDown_interval_basic_cont_description {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
margin-left: .3em;
margin-top: 0.3em;
font-size: 1.2em;
font-weight: bold;
color: white;
text-shadow: 0.1em 0.1em 0.1em #000000;
}
.countDown_digit_cont {
-webkit-perspective: 3.2em;
perspective: 3.2em;
box-shadow: 0.1em 0.1em 0.1em rgba(0, 0, 0, 0.2);
width: 1em;
height: 1.6em;
position: relative;
line-height: 1.6em;
font-size: 5em;
font-weight: bold;
border-radius: 0.08em;
}
.countDown_digit_cont:nth-child(n+1):not(:last-child) { margin-right: 0.05em; }
.countDown_digit_last_placeholder, .countDown_digit_new_placeholder {
position: absolute;
left: 0;
width: 100%;
height: 50%;
text-align: center;
overflow: hidden;
}
.countDown_digit_last_placeholder {
bottom: 0;
background: white;
border-radius: 0 0 0.08em 0.08em;
}
.countDown_digit_last_placeholder_inner {
width: 100%;
height: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
bottom: 50%;
position: absolute;
}
.countDown_digit_new_placeholder {
top: 0;
background: #f7f7f7;
border-radius: 0.08em 0.08em 0 0;
}
.countDown_digit_last_rotate, .countDown_digit_new_rotate {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
width: 100%;
height: 50%;
font-weight: bold;
position: absolute;
top: 0;
overflow: hidden;
-webkit-animation-duration: 0.4s;
animation-duration: 0.4s;
-webkit-animation-timing-function: linear;
animation-timing-function: linear;
border-radius: 0.08em 0.08em 0 0;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
-webkit-transform-origin: 100% 100%;
transform-origin: 100% 100%;
}
.countDown_digit_last_rotate:after, .countDown_digit_new_rotate:after {
content: "";
position: absolute;
z-index: -1;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
border-bottom: 0.01em solid rgba(0, 0, 0, 0.1);
}
.countDown_digit_last_rotate {
-webkit-animation-name: countDown_flip_1;
animation-name: countDown_flip_1;
background: #f7f7f7;
}
.countDown_digit_new_rotate {
-webkit-animation-name: countDown_flip_2;
animation-name: countDown_flip_2;
background: white;
}
.countDown_digit_new_rotated {
-webkit-transform: rotateX(180deg);
transform: rotateX(180deg);
width: 100%;
height: 100%;
}
.countDown_digit_new_rotated_inner {
width: 100%;
height: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
bottom: 50%;
position: absolute;
}
@-webkit-keyframes
countDown_flip_1 { 0% {
-webkit-transform: rotateX(0deg);
transform: rotateX(0deg);
z-index: 1;
}
100% {
-webkit-transform: rotateX(-180deg);
transform: rotateX(-180deg);
z-index: 0;
}
}
@keyframes
countDown_flip_1 { 0% {
-webkit-transform: rotateX(0deg);
transform: rotateX(0deg);
z-index: 1;
}
100% {
-webkit-transform: rotateX(-180deg);
transform: rotateX(-180deg);
z-index: 0;
}
}
@-webkit-keyframes
countDown_flip_2 { 0% {
-webkit-transform: rotateX(0deg);
transform: rotateX(0deg);
z-index: 0;
}
100% {
-webkit-transform: rotateX(-180deg);
transform: rotateX(-180deg);
z-index: 1;
}
}
@keyframes
countDown_flip_2 { 0% {
-webkit-transform: rotateX(0deg);
transform: rotateX(0deg);
z-index: 0;
}
100% {
-webkit-transform: rotateX(-180deg);
transform: rotateX(-180deg);
z-index: 1;
}
}Default configuration options.
var cd = new Countdown({
cont: null,
countdown: true,
endDate: {
year: 0,
month: 0,
day: 0,
hour: 0,
minute: 0,
second: 0
},
endCallback: null,
outputFormat: 'year|week|day|hour|minute|second',
outputTranslation: {
year: 'Years',
week: 'Weeks',
day: 'Days',
hour: 'Hours',
minute: 'Minutes',
second: 'Seconds',
}
});Changelog:
07/29/2020
- fix prefix class generation
07/12/2020
- Updated styles
03/18/2020
- Callback function fixed
10/07/2018
- Add option for count up mode
