天天看点

纯CSS实现倒计时动画

实现原理

a.外盒子div.cell,一个字的宽和高,超过不显示,确保只能显示一个字。

b.内盒子div.num,一个字的宽,行高一个字高,我们通过这个盒子的移动实现动画。

c.内盒子的移动动画的animation-timing-function使用step

d.倒计时结束,外盒子动画消失掉

实现过程

好的,来看看实现过程,html文件是这样的,中文的倒计时也可以,不过中文的网络字体太少,所以没弄,感兴趣的同学可以弄起来。

[html] view plain copy

纯CSS实现倒计时动画
纯CSS实现倒计时动画
  1. <div class="cell">  
  2.   <div class="num">5 4 3 2 1 0</div>  
  3.   <!--<div class="num">五 四 三 二 一 零</div>-->  
  4. </div>  

CSS部分使用prefix free和normailize,另外为了实现英文字体,我们用了google字体,你需要导入这个文件

http://fonts.googleapis.com/css?family=Allura|Frijole|Varela+Round

[css] view plain copy

纯CSS实现倒计时动画
纯CSS实现倒计时动画
  1. body{  
  2.   background:#333;  
  3. }  
  4. .cell{  
  5.     width: 1em;    
  6.     height: 1em;  
  7.     border:1px dashed rgba(255,255,255,0.1);  
  8.     font-size:120px;  
  9.     font-family:Frijole;  
  10.     overflow: hidden;  
  11.     position:absolute;  
  12.     top:50%;  
  13.     left:50%;  
  14.     margin:-0.5em 0 0  -0.5em;  
  15.     opacity:0;  
  16.     animation:go 6s;  
  17.     transform-origin:left bottom;  
  18. }  
  19. .num{  
  20.     position:absolute;  
  21.     width: 1em;  
  22.     color:#E53F39;  
  23.     line-height: 1em;    
  24.     text-align: center;  
  25.     text-shadow:1px 1px 2px rgba(255,255,255,.3);  
  26.     animation:run 6s steps(6);  
  27. }  
  28. @keyframes run{  
  29.     0%{top:0;}  
  30.     100%{top:-6em;}  
  31. }  
  32. @keyframes go{  
  33.   0%   {opacity:1;}  
  34.   84%  {opacity:1;transform:rotate(0deg) scale(1);}  
  35.   100% {opacity:0;transform:rotate(360deg) scale(.01);}  
  36. }  

嗯,完工!