网站中如果有动画效果可以使网站显得与众不同更吸引人的注意,实现动画效果有2种方式,一是js实现,二是使用css实现。css3中实现动画效果有2种方式分别为transition过渡和animation动画,相信有很多伙伴并不清楚他们有什么区别,今天小编来给大家介绍一下。

animation属性类似于transition,他们都是随着时间改变元素的属性值,
其主要区别在于:
transition需要触发一个事件才会随着时间改变其CSS属性;多用在页面元素鼠标经过,鼠标点击,鼠标离开等时发生动画效果。
例如一个div初始宽度为100px,实现效果鼠标经过时宽度变为200px;实现代码如下:
- div
- {
- width:100px;
- transition: width 2s;
- -moz-transition: width 2s; /* Firefox 4 */
- -webkit-transition: width 2s;/* Safari 和 Chrome */
- -o-transition: width 2s;/* Opera */
- }
- div:hover{width:300px;}
CSS3 过渡是元素从一种样式逐渐改变为另一种的效果。 要实现这一点,必须规定两项内容: 规定您希望把效果添加到哪个 CSS 属性上,规定效果的时长。
animation在不需要触发任何事件的情况下,也可以显式的随时间变化来改变元素CSS属性,达到一种动画的效果 ,多用在页面初始打开,或者div进入浏览器可视区域时的动画效果。
1)animation动画不需要事件触发,transition过渡需要。
2)过渡只有一组(两个:开始-结束) 关键帧,动画可以设置多个。
例如动态改变一个div背景,初始div有个背景色,当动画为 25% 及 50% 时改变背景色,然后当动画 100% 完成时再次改变。
首先,给div规定动画的名称和动画的时长,名字为myfirst,动画时长5s。
- div
- {
- animation: myfirst 5s;
- -moz-animation: myfirst 5s;/* Firefox */
- -webkit-animation: myfirst 5s;/* Safari 和 Chrome */
- -o-animation: myfirst 5s; /* Opera */
- }
然后添加动画效果
- @keyframes myfirst
- {
- 0% {background: red;}
- 25% {background: yellow;}
- 50% {background: blue;}
- 100% {background: green;}
- }
- @-moz-keyframes myfirst /* Firefox */
- {
- 0% {background: red;}
- 25% {background: yellow;}
- 50% {background: blue;}
- 100% {background: green;}
- }
- @-webkit-keyframes myfirst /* Safari 和 Chrome */
- {
- 0% {background: red;}
- 25% {background: yellow;}
- 50% {background: blue;}
- 100% {background: green;}
- }
- @-o-keyframes myfirst /* Opera */
- {
- 0% {background: red;}
- 25% {background: yellow;}
- 50% {background: blue;}
- 100% {background: green;}
- }
总结只要记住一点就行:如果动画需要事件去触发的话使用transition,比如网页常见的鼠标放到元素时,元素发生大小,颜色,位置之类的变化。如果不需要事件去触发的话用animation比如幻灯片切换,页面打开元素从左右上下缓慢进入效果,元素由不显示到缓慢显示效果等。

