用CSS3创建动画价格表

来源:互联网 发布:qq for ubuntu 16.04 编辑:程序博客网 时间:2024/04/25 04:12
原文地址:http://webdesignersdesk.com/2010/08/create-animated-price-grid-using-css3/

译者:蒋宇捷

 

 

    今天我们将要只使用CSS3来创建一个动画价格表。完全不使用Jquery,不使用图片,不使用Flash。

今天我们将要学到的知识

CSS3线性渐变

CSS3放射渐变

CSS3转换

CSS3动画

先看看示例(只支持Safari和Chrome)


第一步 HTML文件

    首先我们要编写基本的HTML代码作为开始。这样我们需要一个表格可以放置我们所有的内容。这个表格有四列六行,代码如下所示:

[c-sharp] view plaincopy
  1. <div id="grid">  
  2.     <div id="detail">  
  3.         <h1>Hosting</h1>  
  4.         <ul class="hosting">  
  5.             <li>Space</li>  
  6.             <li>Bandwidth</li>  
  7.             <li>Processor</li>  
  8.             <li>Ram</li>  
  9.             <li>Price</li>  
  10.         </ul>  
  11.    </div>  
  12.    
  13.     <div id="basic">  
  14.         <h1>Basic</h1>  
  15.         <ul class="basic">  
  16.             <li>100 MB</li>  
  17.             <li>1 GB</li>  
  18.             <li>Core 2 Duo</li>  
  19.             <li>512 MB</li>  
  20.             <li>10$</li>  
  21.         </ul>  
  22.         <div>Basic Plan for Small Size business.</div>  
  23.     </div>  
  24.    
  25.     <div id="premium">  
  26.         <h1>Premium</h1>  
  27.         <ul class="premium">  
  28.             <li>2 GB</li>  
  29.             <li>10 GB</li>  
  30.             <li>Core 2 Duo</li>  
  31.             <li>1 GB</li>  
  32.             <li>20$</li>  
  33.         </ul>  
  34.         <div>Run Multiple Website on single CP.</div>  
  35.     </div>  
  36.    
  37.     <div id="ultimate">  
  38.         <h1>Ultimate</h1>  
  39.         <ul class="ultimate">  
  40.             <li>5 GB</li>  
  41.             <li>20 GB</li>  
  42.             <li>Core 2 Duo</li>  
  43.             <li>2 GB</li>  
  44.             <li>30$</li>  
  45.         </ul>  
  46.         <div>Use this for High Traffic Websites.</div>  
  47.     </div>  
  48. </div>  
 

第二步 CSS

现在为我们的HTML文件加上样式,这里我想使用3个不同的渐变,头部和价格行采用线性渐变,剩下的行采用放射渐变。如下的代码带有详细解释。

[javascript] view plaincopy
  1. /* 基本的布局,所有的表格都放在这里面 */  
  2. #grid {  
  3.          margin-top:200px;  
  4.          margin-left:auto;  
  5.          margin-right:auto;  
  6.          width:605px;  
  7.          height:auto;  
  8.          background-color:#9CF;  
  9. }  
  10. /* 第一列 */  
  11. #detail {  
  12.          width:150px;  
  13.          float:left;  
  14.          text-align:center;  
  15. }  
  16. /* 第二列 */  
  17. #basic {  
  18.          width:150px;  
  19.          float:left;  
  20.          text-align:center;  
  21.    
  22. }  
  23. /* 第三列 */  
  24. #premium {  
  25.          width:150px;  
  26.          float:left;  
  27.          text-align:center;          
  28. }  
  29. /* 第四列 */  
  30. #ultimate {  
  31.          width:150px;  
  32.          float:left;  
  33.          text-align:center;          
  34. }  
  35. /* 头部 */  
  36. h1 {  
  37.          padding-top:15px;  
  38.          padding-bottom:15px;  
  39.          font-family:Tahoma, Geneva, sans-serif;  
  40.          font-size:20px;  
  41.          font-weight:bold;  
  42.          border:1px solid #CCC;  
  43.          /* Firefox的线性渐变 */  
  44.          background: -moz-linear-gradient(top,  #b0b0b0,  #ffffff);  
  45.          /* Safari和Chrome的设置 */  
  46.          background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #b0b0b0),color-stop(1, #ffffff));  
  47.          text-shadow: #fff 1px 1px 1px;  
  48. }  
  49. li {  
  50.          padding-top:10px;  
  51.          padding-bottom:10px;  
  52.          font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;  
  53.          font-size:14px;  
  54.          border:1px solid #256490;  
  55.          text-shadow: #000 2px 2px 2px;  
  56.          color:#FFF;  
  57. }  
  58. li {       
  59.          /* 火狐的设置 */  
  60.          background: -moz-radial-gradient(50% 50% 90deg,ellipse closest-corner, #296a96 10%, #1c5a85 100%);  
  61.          /* Safari和Chrome的设置 */  
  62.          background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #296a96),color-stop(1, #1c5a85));  
  63. }  
  64. /* 为li的最后一个元素设置另外一个样式 */  
  65. ul li:last-child {  
  66.          /* 火狐的设置 */  
  67.          background: -moz-linear-gradient(top,  #7d910f,  #aec31f);  
  68.          /* Safari和Chrome的设置*/  
  69.          background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #7d910f),color-stop(1, #aec31f));  
  70.          border:1px solid #8c9d17;  
  71.          font-family:Verdana, Geneva, sans-serif;  
  72.          font-weight:bolder;  
  73.          font-size:18px;  
  74. }  

    现在到了编写动画的时间。我想让每一列在鼠标悬停时比原始尺寸更大一些。要实现此效果我们采用CSS3的转换属性:列的原始大小为1,当鼠标悬停时变为1.1。如下的代码带有注释。

[javascript] view plaincopy
  1. /* 现在我们设置转换效果来增大鼠标悬停时每一列的大小 */  
  2. #basic {  
  3.          /* 火狐的设置 */  
  4.          -moz-transition: all 0.5s ease-in-out;  
  5.          /* Safari和Chrome的设置 */  
  6.          -webkit-transition: all 0.5s ease-in-out;  
  7. }  
  8. /* Increase the size of Coloumn 10% when hovered */  
  9. #basic:hover {  
  10.          /* 火狐的设置 */  
  11.          -moz-transform:scale(1.1);  
  12.          /* Safari和Chrome的设置 */  
  13.          -webkit-transform:scale(1.1);  
  14. }  
  15. #premium {  
  16.          -moz-transition: all 0.5s ease-in-out;  
  17.          -webkit-transition: all 0.5s ease-in-out;  
  18. }  
  19. #premium:hover {  
  20.          -moz-transform:scale(1.1);  
  21.          -webkit-transform:scale(1.1);  
  22. }  
  23.   
  24. #ultimate {  
  25.          -moz-transition: all 0.5s ease-in-out;  
  26.          -webkit-transition: all 0.5s ease-in-out;  
  27. }  
  28. #ultimate:hover {  
  29.          -moz-transform:scale(1.1);  
  30.          -webkit-transform:scale(1.1);  
  31. }  

    现在当鼠标放在每一列时,需要显示一个Coda Bubble样式(译者注:Coda Bubble是一个JQuery的插件,用于显示冒泡效果的提醒弹出框)的弹出窗口。我们将在每个div下使用一个div来达到目的(#basic、#premiun、#ultimate)。最开始我们将div的透明度设置为0,当鼠标悬停时透明度变为1。在转换效果淡出0.5秒的延迟后,根据你想要窗口弹出的位置设置它的margin。下面的CSS代码带有注释。

[javascript] view plaincopy
  1. #basic > div {  
  2.          width: 100px;  
  3.          height: 50px;  
  4.          position: absolute;  
  5.          padding: 7px;  
  6.          visibility:hidden;  
  7.          opacity: 0;                  
  8.          background: -moz-linear-gradient(top,  #b0b0b0,  #ffffff);  
  9.          background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #b0b0b0),color-stop(1, #ffffff));  
  10.          /* 转换属性 */  
  11.          -moz-transition: all 1s ease-in-out; /* Firefox */  
  12.          -webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */                  
  13. }  
  14.   
  15. #basic:hover > div {  
  16.          visibility:visible;  
  17.          opacity: 1;  
  18.          margin-top: -150px;  
  19.          margin-left: 170px;   
  20.          /*转换属性*/  
  21.          -moz-transition: all 1s ease-in-out; /* Firefox */  
  22.          -webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */  
  23. }  
  24.   
  25. #premium > div {  
  26.          width: 100px;  
  27.          height: 50px;  
  28.          position: absolute;  
  29.          padding: 7px;  
  30.          visibility:hidden;  
  31.          opacity: 0;                  
  32.          background: -moz-linear-gradient(top,  #b0b0b0,  #ffffff);  
  33.          background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #b0b0b0),color-stop(1, #ffffff));  
  34.          /* 转换属性 */  
  35.          -moz-transition: all 1s ease-in-out; /* Firefox */  
  36.          -webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */                  
  37. }  
  38.   
  39. #premium:hover > div {  
  40.          visibility:visible;  
  41.          opacity: 1;  
  42.          margin-top: -150px;  
  43.          margin-left: 170px;   
  44.          /* 转换属性 */  
  45.          -moz-transition: all 1s ease-in-out; /* Firefox */  
  46.          -webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */  
  47. }  
  48.   
  49. #ultimate > div {  
  50.          width: 100px;  
  51.          height: 50px;  
  52.          position: absolute;  
  53.          padding: 7px;  
  54.          visibility:hidden;  
  55.          opacity: 0;                  
  56.          background: -moz-linear-gradient(top,  #b0b0b0,  #ffffff);  
  57.          background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #b0b0b0),color-stop(1, #ffffff));  
  58.          /* 转换属性 */  
  59.          -moz-transition: all 1s ease-in-out; /* Firefox */  
  60.          -webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */                  
  61. }  
  62.   
  63. #ultimate:hover > div {  
  64.          visibility:visible;  
  65.          opacity: 1;  
  66.          margin-top: -150px;  
  67.          margin-left: 170px;   
  68.          /*转换属性*/  
  69.          -moz-transition: all 1s ease-in-out; /* Firefox */  
  70.          -webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */  
  71. }  

看看示例

原创粉丝点击