CSS3动画详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSS3动画详解相关的知识,希望对你有一定的参考价值。

CSS3 Transitions, Transforms和Animation使用简介与应用展示

CSS3动画相关的几个属性是:transition, transform, animation;我分别理解为过渡,变换,动画。

transition指过渡啦,就是从a点都b点,是有时间的,是连续的,一般针对常规CSS属性;transform指变换,就那几个 固定的属性:旋转,缩放,偏移什么的,与transition配合旋转啊什么的,就会很平滑。aanimation要比transition厉害些。

 

Transitions

其作用是:平滑的改变CSS的值。无论是点击事件,焦点事件,还是鼠标hover,只要值改变了,就是平滑的,就是动画。

transition-property :* //指定过渡的性质,比如transition-property:backgrond 就是指backgound参与这个过渡
transition-duration:*//指定这个过渡的持续时间
transition-delay:* //延迟过渡时间
transition-timing-function:*//指定过渡类型,有ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier

 

例如:

.trans {

    -webkit-transition-property: background-color;

    -webkit-transition-duration: 0.3s;

    -webkit-transition-timing-function: ease;

}

.trans:hover {

    

    color: #fff;

}

 

transition属性合并,并扩展几个浏览器,如下CSS代码:

.trans {

    -webkit-transition: background-color 0.3s ease;

    -moz-transition: background-color 0.3s ease;

    -o-transition: background-color 0.3s ease;

    transition: background-color 0.3s ease;

}

.trans:hover {

    

    color: #fff;

}

 

transform

transform指变换,拉伸,压缩,旋转,偏移。见下面示例代码:

.trans_skew { transform: skew(35deg); }

.trans_scale { transform:scale(1, 0.5); }

.trans_rotate { transform:rotate(45deg); }

.trans_translate { transform:translate(10px, 20px); }

 

transform属性要是加上transition的过渡特性,可以产生很炫的动态效果,例如

.trans_effect {

    -webkit-transition:all 2s ease-in-out;

    -moz-transition:all 2s ease-in-out;

    -o-transition:all 2s ease-in-out;

    -ms-transition:all 2s ease-in-out;    

    transition:all 2s ease-in-out;

}

.trans_effect:hover {

    -webkit-transform:rotate(720deg) scale(2,2);

    -moz-transform:rotate(720deg) scale(2,2);

    -o-transform:rotate(720deg) scale(2,2);

    -ms-transform:rotate(720deg) scale(2,2);

    transform:rotate(720deg) scale(2,2);        

}

 

Animations

前面我们在使用transition制作一个简单的transition效果时,我们包括了初始属性和最终属性,一个开始执行动作时间和一个延续动作时间 以及动作的变换速率,其实这些值都是一个中间值,如果我们要控制的更细一些,比如说我要第一个时间段执行什么动作,第二个时间段执行什么动作(换到 flash中说,就是第一帧我要执行什么动作,第二帧我要执行什么动作),这样我们用Transition就很难实现了,此时我们也需要这样的一个“关键 帧”来控制。那么CSS3的Animation就是由“keyframes”这个属性来实现这样的效果。下面我们一起先来看看Keyframes:

Keyframes具 有其自己的语法规则,他的命名是由"@keyframes"开头,后面紧接着是这个动画的名称加上一对花括号“{}”,括号中就是一些不同时间段样式 规则,有点像我们css的样式写法一样。对于一个"@keyframes"中的样式规则是由多个百分比构成的,如“0%”"100%"之间,我们可以在 这个规则中创建多个百分比,我们分别给每一个百分比中给需要有动画效果的元素加上不同的属性,从而让元素达到一种在不断变化的效果,比如说移动,改变元素 颜色,位置,大小,形状等,不过有一点需要注意的是,我们可以使用“fromt”“to”来代表一个动画是从哪开始,到哪结束,也就是说这个 "from"就相当于"0%""to"相当于"100%",值得一说的是,其中"0%"不能像别的属性取值一样把百分比符号省略,我们在这里必须加上百 分符号(“%”)如果没有加上的话,我们这个keyframes是无效的,不起任何作用。因为keyframes的单位只接受百分比值。

 @keyframes IDENT {

     from {

       Properties:Properties value;

     }

     Percentage {

       Properties:Properties value;

     }

     to {

       Properties:Properties value;

     }

   }

   或者全部写成百分比的形式:

   @keyframes IDENT {

      0% {

         Properties:Properties value;

      }

      Percentage {

         Properties:Properties value;

      }

      100% {

         Properties:Properties value;

      }

    }

 

 

 

以上是关于CSS3动画详解的主要内容,如果未能解决你的问题,请参考以下文章

css3动画基础详解(@keyframes和animation)

如何制作css3的3d动画——以骰子旋转为例,详解css3动画属性

CSS3动画详解(结合实例)

CSS3 动画及过渡详解

css3动画详解

前端学习(18)~css3属性学习:动画详解