或许你更青睐于使用jQuery的各种插件来制作自己的按钮,但本文我们将教你如何仅仅使用CSS3来打造精美的按钮。
提示:以下的文字内容主要翻译自http://tympanus.net/codrops/2011/11/07/animated-buttons-with-css3/,如果您对文中的某些技术细节存在疑问,请以原文为准。
CSS3提供了两项新属性,transform和transition。这些属性能够对内容产生一个“变幻”效果,本文所描述的动态按钮,就是基于这项属性的。请注意,CSS3 transition需要现代浏览器的支持,如果您还不清楚各浏览器对该特性的支持情况,请在这里查看:http://caniuse.com/
HTML
HTML非常简单,其中的img标签为按钮的图标。
Available on the Apple App Store
CSS
在CSS当中,我们需要让transition属性被设置在按钮的动态部分上,这样我们才能够在鼠标覆盖在按钮上时产生动态效果。另外,价格的文字我们通过设置opacity属性来将其隐藏;而阴影效果则令按钮更加逼真。
.a-btn{
background: linear-gradient(top, #a9db80 0%,#96c56f 100%);
padding-left: 90px;
padding-right: 105px;
height: 90px;
display: inline-block;
position: relative;
border: 1px solid #80ab5d;
box-shadow:
0px 1px 1px rgba(255,255,255,0.8) inset,
1px 1px 3px rgba(0,0,0,0.2);
border-radius: 4px;
float: left;
clear: both;
margin: 10px 0px;
overflow: hidden;
transition: box-shadow 0.3s ease-in-out;
}
.a-btn img{
position: absolute;
left: 15px;
top: 13px;
border: none;
transition: all 0.3s ease-in-out;
}
.a-btn .a-btn-slide-text{
position: absolute;
font-size: 36px;
top: 18px;
left: 18px;
color: #6d954e;
opacity: 0;
text-shadow: 0px 1px 1px rgba(255,255,255,0.4);
transition: opacity 0.2s ease-in-out;
}
.a-btn-text{
padding-top: 13px;
display: block;
font-size: 30px;
text-shadow: 0px -1px 1px #80ab5d;
}
.a-btn-text small{
display: block;
font-size: 11px;
letter-spacing: 1px;
}
.a-btn-icon-right{
position: absolute;
right: 0px;
top: 0px;
height: 100%;
width: 80px;
border-left: 1px solid #80ab5d;
box-shadow: 1px 0px 1px rgba(255,255,255,0.4) inset;
}
.a-btn-icon-right span{
width: 38px;
height: 38px;
opacity: 0.7;
border-radius: 20px;
position: absolute;
left: 50%;
top: 50%;
margin: -20px 0px 0px -20px;
border: 1px solid rgba(0,0,0,0.5);
background: #4e5c50 url(../images/arrow_down.png) no-repeat center center;
box-shadow:
0px 1px 1px rgba(255,255,255,0.3) inset,
0px 1px 2px rgba(255,255,255,0.5);
transition: all 0.3s ease-in-out;
}
当鼠标覆盖于按钮上时,我们将改变阴影和价格的透明度,以此产生按钮被覆盖的效果。注意,我们的主角transform使用了放大效果。
.a-btn:hover{
box-shadow:
0px 1px 1px rgba(255,255,255,0.8) inset,
1px 1px 5px rgba(0,0,0,0.4);
}
.a-btn:hover img{
transform: scale(10);
opacity: 0;
}
.a-btn:hover .a-btn-slide-text,
.a-btn:hover .a-btn-icon-right span{
opacity: 1;
}
最后,当按钮被按下时,我们再次修改阴影,并且将右侧的图标稍稍放大:
.a-btn:active {
position:relative;
top:1px;
background:#80ab5d;
box-shadow:1px 1px 2px rgba(0,0,0,0.4) inset;
border-color: #a9db80;
}
.a-btn:active .a-btn-icon-right span{
transform: scale(1.4);
}
OK,一个动态按钮已经制作完毕了。以上我们仅仅使用了transform属性的放大效果,而在demo中,还有transition效果和transform的其它效果。