原文地址:[http://webdesignersdesk.com/2010/08/create-animated-price-grid-using-css3/](http://webdesignersdesk.com/2010/08/create-animated-price-grid-using-css3/)
译者:蒋宇捷
![](https://box.kancloud.cn/2016-08-02_57a05bd3bfe0d.gif)
今天我们将要只使用CSS3来创建一个动画价格表。完全不使用Jquery,不使用图片,不使用Flash。
### 今天我们将要学到的知识
CSS3线性渐变
CSS3放射渐变
CSS3转换
CSS3动画
### [先看看示例(只支持Safari和Chrome)](http://webdesignersdesk.com/demo/pricegrid/)
### 第一步 HTML文件
首先我们要编写基本的HTML代码作为开始。这样我们需要一个表格可以放置我们所有的内容。这个表格有四列六行,代码如下所示:
<div id="grid"> <div id="detail"> <h1>Hosting</h1> <ul class="hosting"> <li>Space</li> <li>Bandwidth</li> <li>Processor</li> <li>Ram</li> <li>Price</li> </ul> </div> <div id="basic"> <h1>Basic</h1> <ul class="basic"> <li>100 MB</li> <li>1 GB</li> <li>Core 2 Duo</li> <li>512 MB</li> <li>10$</li> </ul> <div>Basic Plan for Small Size business.</div> </div> <div id="premium"> <h1>Premium</h1> <ul class="premium"> <li>2 GB</li> <li>10 GB</li> <li>Core 2 Duo</li> <li>1 GB</li> <li>20$</li> </ul> <div>Run Multiple Website on single CP.</div> </div> <div id="ultimate"> <h1>Ultimate</h1> <ul class="ultimate"> <li>5 GB</li> <li>20 GB</li> <li>Core 2 Duo</li> <li>2 GB</li> <li>30$</li> </ul> <div>Use this for High Traffic Websites.</div> </div></div>
### 第二步 CSS
现在为我们的HTML文件加上样式,这里我想使用3个不同的渐变,头部和价格行采用线性渐变,剩下的行采用放射渐变。如下的代码带有详细解释。
~~~
/* 基本的布局,所有的表格都放在这里面 */
#grid {
margin-top:200px;
margin-left:auto;
margin-right:auto;
width:605px;
height:auto;
background-color:#9CF;
}
/* 第一列 */
#detail {
width:150px;
float:left;
text-align:center;
}
/* 第二列 */
#basic {
width:150px;
float:left;
text-align:center;
}
/* 第三列 */
#premium {
width:150px;
float:left;
text-align:center;
}
/* 第四列 */
#ultimate {
width:150px;
float:left;
text-align:center;
}
/* 头部 */
h1 {
padding-top:15px;
padding-bottom:15px;
font-family:Tahoma, Geneva, sans-serif;
font-size:20px;
font-weight:bold;
border:1px solid #CCC;
/* Firefox的线性渐变 */
background: -moz-linear-gradient(top, #b0b0b0, #ffffff);
/* Safari和Chrome的设置 */
background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #b0b0b0),color-stop(1, #ffffff));
text-shadow: #fff 1px 1px 1px;
}
li {
padding-top:10px;
padding-bottom:10px;
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
font-size:14px;
border:1px solid #256490;
text-shadow: #000 2px 2px 2px;
color:#FFF;
}
li {
/* 火狐的设置 */
background: -moz-radial-gradient(50% 50% 90deg,ellipse closest-corner, #296a96 10%, #1c5a85 100%);
/* Safari和Chrome的设置 */
background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #296a96),color-stop(1, #1c5a85));
}
/* 为li的最后一个元素设置另外一个样式 */
ul li:last-child {
/* 火狐的设置 */
background: -moz-linear-gradient(top, #7d910f, #aec31f);
/* Safari和Chrome的设置*/
background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #7d910f),color-stop(1, #aec31f));
border:1px solid #8c9d17;
font-family:Verdana, Geneva, sans-serif;
font-weight:bolder;
font-size:18px;
}
~~~
现在到了编写动画的时间。我想让每一列在鼠标悬停时比原始尺寸更大一些。要实现此效果我们采用CSS3的转换属性:列的原始大小为1,当鼠标悬停时变为1.1。如下的代码带有注释。
~~~
/* 现在我们设置转换效果来增大鼠标悬停时每一列的大小 */
#basic {
/* 火狐的设置 */
-moz-transition: all 0.5s ease-in-out;
/* Safari和Chrome的设置 */
-webkit-transition: all 0.5s ease-in-out;
}
/* Increase the size of Coloumn 10% when hovered */
#basic:hover {
/* 火狐的设置 */
-moz-transform:scale(1.1);
/* Safari和Chrome的设置 */
-webkit-transform:scale(1.1);
}
#premium {
-moz-transition: all 0.5s ease-in-out;
-webkit-transition: all 0.5s ease-in-out;
}
#premium:hover {
-moz-transform:scale(1.1);
-webkit-transform:scale(1.1);
}
#ultimate {
-moz-transition: all 0.5s ease-in-out;
-webkit-transition: all 0.5s ease-in-out;
}
#ultimate:hover {
-moz-transform:scale(1.1);
-webkit-transform:scale(1.1);
}
~~~
现在当鼠标放在每一列时,需要显示一个Coda Bubble样式(译者注:CodaBubble是一个JQuery的插件,用于显示冒泡效果的提醒弹出框)的弹出窗口。我们将在每个div下使用一个div来达到目的(#basic、#premiun、#ultimate)。最开始我们将div的透明度设置为0,当鼠标悬停时透明度变为1。在转换效果淡出0.5秒的延迟后,根据你想要窗口弹出的位置设置它的margin。下面的CSS代码带有注释。
~~~
#basic > div {
width: 100px;
height: 50px;
position: absolute;
padding: 7px;
visibility:hidden;
opacity: 0;
background: -moz-linear-gradient(top, #b0b0b0, #ffffff);
background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #b0b0b0),color-stop(1, #ffffff));
/* 转换属性 */
-moz-transition: all 1s ease-in-out; /* Firefox */
-webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */
}
#basic:hover > div {
visibility:visible;
opacity: 1;
margin-top: -150px;
margin-left: 170px;
/*转换属性*/
-moz-transition: all 1s ease-in-out; /* Firefox */
-webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */
}
#premium > div {
width: 100px;
height: 50px;
position: absolute;
padding: 7px;
visibility:hidden;
opacity: 0;
background: -moz-linear-gradient(top, #b0b0b0, #ffffff);
background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #b0b0b0),color-stop(1, #ffffff));
/* 转换属性 */
-moz-transition: all 1s ease-in-out; /* Firefox */
-webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */
}
#premium:hover > div {
visibility:visible;
opacity: 1;
margin-top: -150px;
margin-left: 170px;
/* 转换属性 */
-moz-transition: all 1s ease-in-out; /* Firefox */
-webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */
}
#ultimate > div {
width: 100px;
height: 50px;
position: absolute;
padding: 7px;
visibility:hidden;
opacity: 0;
background: -moz-linear-gradient(top, #b0b0b0, #ffffff);
background-image: -webkit-gradient(linear,left bottom,left top,color-stop(0, #b0b0b0),color-stop(1, #ffffff));
/* 转换属性 */
-moz-transition: all 1s ease-in-out; /* Firefox */
-webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */
}
#ultimate:hover > div {
visibility:visible;
opacity: 1;
margin-top: -150px;
margin-left: 170px;
/*转换属性*/
-moz-transition: all 1s ease-in-out; /* Firefox */
-webkit-transition: all 0.5s ease-in-out; /* Safari和Chrome */
}
~~~
### [看看示例](http://webdesignersdesk.com/demo/pricegrid/)
- 前言
- AutoPager的简单实现
- 利用CSS3特性巧妙实现漂亮的DIV箭头
- IE9在Win7下任务栏新特性简介
- 浏览器九宫格的简单实现
- Raphael js库简介
- 使用CSS3构建Ajax加载动画
- 用CSS3创建动画价格表
- 用CSS3实现浏览器的缩放功能
- 用纯CSS3实现QQ LOGO
- 用CSS3创建旋转载入器
- 使用Javascript开发移动应用程序
- 用HTML5创建超酷图像灰度渐变效果
- 使用CSS3创建文字颜色渐变(CSS3 Text Gradient)
- 仅用CSS创建立体旋转幻灯片
- 如何创建跨浏览器的HTML5表单
- 用CSS3实现动画进度条
- HTML5 Guitar Tab Player
- 奇妙的HTML5 Canvas动画实例
- 谈HTML5和CSS3的国际化支持
- 实现跨浏览器的HTML5占位符
- 前端开发必备工具:WhatFont Bookmarklet-方便的查询网页上的字体
- 使用HTML5和CSS3来创建幻灯片
- HTML5之美
- 如何使用HTML5创建在线精美简历
- 以小见大、由浅入深-谈如何面试Javascript工程师
- 快速入门:HTML5强大的Details元素
- 用CSS3实现图像风格
- HTML5视频字幕与WebVTT
- 用纯CSS3实现Path华丽动画
- 用3个步骤实现响应式网页设计
- 遇见CSS3滤镜
- 关于CSS3滤镜的碎念
- 用纯CSS3绘制萌系漫画人物动态头像
- CSS3新的鼠标样式介绍
- 用HTML5献上爱的3D玫瑰
- 对HTML5 Device API相关规范的解惑
- 如何使用HTML5实现拍照上传应用
- 2012第一季度国外HTML5移动开发趋势
- HTML5新特性:范围样式
- 百度开发者大会-《用HTML5新特性开发移动App》PPT分享
- Chrome 19对于HTML5最新支持的动态:电池状态API,全屏API,震动API,语音API
- 遇见Javascript类型数组(Typed Array)
- 用HTML5 Audio API开发游戏音乐
- 用HTML5实现人脸识别
- 用Javascript实现人脸美容
- Chrome 20对于HTML5最新支持的动态:颜色输入,网络信息API,CSS着色器
- 用HTML5实现手机摇一摇的功能
- 用HTML5实现iPad应用无限平滑滚动
- 用非响应式设计构建跨端Web App
- 了解SVG
- HTML5图像适配介绍
- HTML5安全:内容安全策略(CSP)简介
- HTML5安全:CORS(跨域资源共享)简介
- 用CSS3 Region和3D变换实现书籍翻页效果
- 谈谈移动App的思维误区
- Chrome新特性:文件夹拖拽支持
- 《关注HTML5安全》
- HTML5安全风险详析之一:CORS攻击
- HTML5安全风险详析之二:Web Storage攻击
- HTML5图像适配最新进展:响应式图片规范草案
- HTML5移动Web App相关标准状态及路线图
- HTML5安全风险详析之三:WebSQL攻击
- Chrome引入WebRTC支持视频聊天App
- HTML5安全风险详析之四:Web Worker攻击
- HTML5安全风险详析之五:劫持攻击
- HTML5安全风险详析之六:API攻击
- HTML5安全攻防详析之七:新标签攻击
- 在iOS Safari中播放离线音频
- 使用WebRTC实现远程屏幕共享
- Firefox、Android、iOS遇见WebRTC
- HTML5光线传感器简介
- HTML5安全攻防详析之八:Web Socket攻击
- HTML5安全攻防详析之完结篇:HTML5对安全的改进
- 激动人心!在网页上通过语音输入文字 - HTML5 Web Speech API介绍
- Web滚动性能优化实战
- 用CSS3设计响应式导航菜单
- 用HTML5构建高性能视差网站
- 漫谈@supports与CSS3条件规则
- HTML5下载属性简介
- 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(一)
- 如何开发优秀的HTML5游戏?-迪斯尼《寻找奥兹之路》游戏技术详解(二)
- 趋势:Chrome为打包应用提供强大新特性
- 从HTML5移动应用现状谈发展趋势
- 基于HTML5的Web跨设备超声波通信方案