css3过渡
过度动画(trainsition)属性就可以实现让元素样式的过度,trainsition支持的浏览器有ie10,firefox,chrome和opera。
先来看看trainsition的几个属性:
trainsition-property:规定应用过渡的css属性名称。
trainsition-duration:规定过度花费的时间。
trainsiton-timing-function:规定过度的时间曲线.
trainsition-delay:规定过渡何时开始。
先看一个简单的过度例子,在demo.css中写上
p{ width:100px; height:100px; background:red; trainsition:width 3s,height 2s;//在这里为了方便,将过渡属性简写了,我们可以将过渡属性简写为trainsition:加上上面四个属性,可以把默认属性省略。 } p:hover { width:300px; height:200px; }
在demo.html中写上
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="demo.css"/> </head> <body> <p></p> </body> </html>
把鼠标移动到红色p块上就可以看见红色的块长和宽慢慢的增加,这就是过渡的最简单实现。
注意:过渡时间不设置的话,默认情况下为0。就是不会出现过渡的效果。
我们更经常使用的方法是通过js来添加样式来实习各种动画过渡,如下:
<!DOCTYPE html> <html> <head> <script src="/jquery/jquery-1.11.1.min.js"></script> <style> p{ background:red; width:200px; height:200px; transition:width 2s,height 2s; } p.over{ width:300px; height:300px; } </style> </head> <body> <p </p> <script> $('p').hover(function(){ $('p').addClass('over');}, function(){ $('p').removeClass('over'); }); </script> </body> </html>
改代码中通过jquery在鼠标划过时添加了over的样式,在鼠标离开时移除了over样式,由于在p样式里设置了transition属性,所以实现了过渡动画。
但是上面虽然实现样式的改变,我们可以看出该改变是从一个初状态到末状态的改变,局限性非常大,所以我们希望有中间状态的转化。这时候就要用到关键帧动画(@keyframes):
其基本格式为:
@keyframes 名称{
时间点{元素状态}
....
}
如我们可以用
@frames chgground{ from{ backgroud:red;} to{backgroud:yellow;} }
定义里关键帧动画之后还要把它绑定到一个要应用的元素中才可以,如:
p{ animation:chgbackground 3s; }
我们用animation来绑定,该元素的属性有:
p就有了chgbackground的动画,我们还可以使用百分比来指定关键帧的状态 ,from to 就是0%和%100,如下代码
@frames chgbackground{ 0%{background:yellow;} 50%{background:red;} 100%{background:black;} }
t通过该代码就可以实现背景在0%到50%和50%到100%时不一样的渐变效果。
使用animate.css只要下载animate.css并在引用该文件,在需要的地方加上上特定的动画类名,就可以实现各种效果,如:
<script>$('p').addClass('shake');</script>就可以轻松的添加元素抖动效果。