CSS3动画简要总结

主要总结一下CSS3动画中这几块:
transition(过渡),animation(动画),transform转换(rotate,translate,scale,skew,matrix)

一、transition(过渡)

img{
    height:15px;
    width:15px;
}

img:hover{
    height: 450px;
    width: 450px;
}

这个变化是没有时间轴的,都是立即完成,当加入transiton后:

img{
    transition: 1s 1s height ease;
}

简写形式,可以单独定义成各个属性:

img{
    transition-property: height; //高度过渡
    transition-duration: 1s;
    transition-delay: 1s; //延迟一秒
    transition-timing-function: ease; //逐渐变慢
}

目前,各大浏览器(包括IE 10)都已经支持无前缀的transition,所以transition已经可以很安全地不加浏览器前缀。

二、animation(动画)

CSS Animation需要指定动画一个周期持续的时间,以及动画效果的名称。

div:hover {
  animation: 1s rainbow;
}

上面代码表示,当鼠标悬停在div元素上时,会产生名为rainbow的动画效果,持续时间为1秒。为此,我们还需要用keyframes关键字,定义rainbow效果。

@keyframes rainbow {
  0% { background: #c00; }
  50% { background: orange; }
  100% { background: yellowgreen; }
}

上面代码表示,rainbow效果一共有三个状态,分别为起始(0%)、中点(50%)和结束(100%)。如果有需要,完全可以插入更多状态。
也可以指定动画具体播放的次数,比如3次,无限循环就用infinite:

div:hover {
  animation: 1s rainbow 3;
}

keyframes关键字用来定义动画的各个状态,它的写法相当自由,0%可以用from代表,100%可以用to代表,因此之前的代码等同于下面的形式:

@keyframes rainbow {
  from { background: #c00 }
  50% { background: orange }
  to { background: yellowgreen }
}

三、transform转换

1、translate移动
div
{
transform: translate(50px,100px);
-ms-transform: translate(50px,100px);       /* IE 9 */
-webkit-transform: translate(50px,100px);   /* Safari and Chrome */
-o-transform: translate(50px,100px);        /* Opera */
-moz-transform: translate(50px,100px);      /* Firefox */
}

值 translate(50px,100px) 把元素从左侧移动 50 像素,从顶端移动 100 像素。

2、rotate旋转
div
{
transform: rotate(30deg);
-ms-transform: rotate(30deg);       /* IE 9 */
-webkit-transform: rotate(30deg);   /* Safari and Chrome */
-o-transform: rotate(30deg);        /* Opera */
-moz-transform: rotate(30deg);      /* Firefox */
}

值 rotate(30deg) 把元素顺时针旋转 30 度。

3、scale改变宽高
div
{
transform: scale(2,4);
-ms-transform: scale(2,4);  /* IE 9 */
-webkit-transform: scale(2,4);  /* Safari 和 Chrome */
-o-transform: scale(2,4);   /* Opera */
-moz-transform: scale(2,4); /* Firefox */
}

值 scale(2,4) 把宽度转换为原始尺寸的 2 倍,把高度转换为原始高度的 4 倍。

4、skew围绕X轴或Y轴翻转
div
{
transform: skew(30deg,20deg);
-ms-transform: skew(30deg,20deg);   /* IE 9 */
-webkit-transform: skew(30deg,20deg);   /* Safari and Chrome */
-o-transform: skew(30deg,20deg);    /* Opera */
-moz-transform: skew(30deg,20deg);  /* Firefox */
}

值 skew(30deg,20deg) 围绕 X 轴把元素翻转 30 度,围绕 Y 轴翻转 20 度。

5、matrix

matrix() 方法把所有 2D 转换方法组合在一起。需要六个参数,包含数学函数,允许您:旋转、缩放、移动以及倾斜元素。

div
{
transform:matrix(0.866,0.5,-0.5,0.866,0,0);
-ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0);     /* IE 9 */
-moz-transform:matrix(0.866,0.5,-0.5,0.866,0,0);    /* Firefox */
-webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */
-o-transform:matrix(0.866,0.5,-0.5,0.866,0,0);      /* Opera */
}

matrix 方法将 div 元素旋转 30 度

你可能感兴趣的:(CSS3动画简要总结)