transform和@keyframes的用法

879 阅读2分钟

一、transform是只执行一遍

1. 平移(translate)

  • translateX:沿X轴方向平移

  • translateY: 沿Y轴方向平移

image.png

2.缩放

   scaleX: 沿X轴方向放大

   scaleY: 沿Y轴方向放大

   scale:  沿X,Y轴方向放大

3. 旋转

   rotateX: 沿X轴旋转

   rotateY:沿Y轴旋转

   rotateZ: 沿Z轴旋转

  rotate: 不指定轴旋转

二、关键帧@keyframes

@keyframes动画是循环的。

三、关键帧@keyframes和animation协同工作

3.1合作原因

CSS3中新添加的属性animation,是用来为元素实现动画效果的,但是animation无法单独担当起实现动画的效果。

  • 需要另一个属性@keyframes来配合;
  • 使用时为了兼容可加上-webkit-、-ms-、-moz-、-khtml-等前缀以适用不同的浏览器。

3.2创建动画原理

  • 创建动画是将一套CSS样式逐渐变化为另一套样式;
  • 通过@keyframes规则,您能够创建动画;
  • @keyframes定义一个动画,并定义具体的动画效果,比如放大还是位移;
  • @keyframes他定义的动画,并不直接执行,需要借助animation来运转。
  • 在动画的过程中您能够多次改变这套CSS样式;
  • 以百分比来规定改变发生的时间,或者通过关键词“from”和“to”,等价于0%和100%。
  • 百分比是指动画完成的时间长度的百分比

3.3定义名称

@keyframes animation { key-frames -selector {css-styles;} }

image.png

  • 对应的具体写法如下

@keyframes show {
		0% {
			transform: translateY(-50px);
		}

		60% {
			transform: translateY(40upx);
		}

		100% {
			transform: translateY(0px);
		}
	}

案例1

名字为gif的@keyframes ,动画完成需要的总时长为1.4s,刚开始的时候图片旋转为0度,动画完成的时候图片旋转360度

.load-border {
    width: 120px;
    height: 120px;
    background: url(../images/loading_icon.png) no-repeat center center;
    -webkit-animation: gif 1.4s infinite linear;
    animation: gif 1.4s infinite linear; 
}
@keyframes gif {
    0% {
        -webkit-transform: rotate(0deg);
        transform: rotate(0deg);
    }
    100% {
        -webkit-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

案例2

名字为mymove的@keyframes ,动画完成需要的总时长为1s,刚开始的时候图片距顶部距离为0px,0.25s后图片距顶部距离为200px,0.5s后图片距顶部的距离为100px,以此类推

.img{
width:120px;
height:120px;
background:url(../images/icon.png) no-repeat center center;
animation:mymove 1s infinite linear;
-webkit-animatin:mymove 1.4s infinite linear;}
@keyframes mymove
{
0% {top:0px;}
25% {top:200px;}
50% {top:100px;}
75% {top:200px;}
100% {top:0px;}

}


}