CSS 动画介绍

过渡transition

transition: property duration timing-function delay; 过渡效果属性,运行时间,运行速度,何时开始

默认执行时间是0

transition:1s 如果只填写时间则默认全部all

过渡属性transition-property

  • 单个或多个属性,多个用逗号隔开

  • none 没有属性过渡效果

  • all 所有 耗性能

过渡时间 transition-duration

  • 默认0 没有过渡效果

  • 单位s或ms

执行曲线 transition-timing-function

  • 默认ease 开始慢-中间快-结束慢

  • linear匀速

  • ease-in 开始慢-结束快

  • ease-out 开始快-结束慢

div {
 width: 100px;
 height: 100px;
 background: blue;
 transition: width 2s;
}
 div:hover {
  width: 300px;
}

2D变化transform

translate

  • 一个参数 代表x轴 y默认0

  • 两个参数 第一个x 第二个y 正数x 向右 正数y向下

  • 偏移量参考左上角

  • 执行完成后将会还原

div {
    width: 100px;
    height: 100px;
    background: blue;
    transition: transform 2s;
}
 div:hover {
  transform: translate(200px);
 }

旋转 rotate

  • 参数只有一个

  • 单位deg

  • 围绕中心z旋转

  • 正数顺时针 ,负数逆时针

div {
    width: 100px;
    height: 100px;
    background: blue;
    transition: transform 2s;
}
div:hover {
      transform: rotate(20deg);
}

缩放scale

  • 一个值代表x与y

  • 两个值第一个x 第二个y

  • 无单位

  • x正数向左变形 负数向右 y正数向上 负数向下

  • 以中心

div {
    width: 100px;
    height: 100px;
    background: blue;
    transition: transform 2s;
}
div:hover {
     transform: scale(1, 2);
}

变形skew

  • 一个值代表x与y

  • 两个值第一个x 第二个y

  • 无单位deg

  • x正数向左变形 负数向右 y正数向上 负数向下

  • 以中心

div {
    width: 100px;
    height: 100px;
    background: blue;
    transition: transform 2s;
}
div:hover {
    transform: skew(20deg, 50deg);
}

变化原点 transform-origin 改变原点位置

  • 默认是transform-origin:center center

  • 原点关键字 top left bottom right center

  • 偏移量左上角

  • 可以使用px em 百分比

  • 只设置一个默认其他cener

变化后的特点

  • 不会脱离文档流

  • 可以移除屏幕或者遮挡

  • 必须是display:block 或者inline-block或者改变父元素display为flex或grid

  • 可以设置多个动画样式,从左到右 空格分开

div {
    width: 100px;
    height: 100px;
    background: blue;
    transition: transform 2s;
}
div:hover {
    transform: skew(20deg, 50deg);
    transform-origin: right;
    //  transform: scale(1, 2) skew(20deg, 50deg);
}

3D变换

translate3d

  • x,y,z三个参数必填

  • x 正数向右,负向左

  • y 正数向下,负向下

  • z 正数向屏幕外 ,负向屏幕内

/* 3d变化 */
transform-style: preserve-3d;
/*视角*/
perspective: 1000px;
子元素
transform: translate3d(20px, 10px, 100px);

旋转rotate3d rotateX routateY rotate Z

  • transform: rotateX(45deg) – 沿着 x 轴正方向旋转 45 度 transform: rotateY(45deg) – 沿着 y 轴正方向旋转 45 度 transform: rotateZ(45deg) – 沿着 z 轴正方向旋转 45 度 transform: rotate3d(x, y, z, 45deg) – 沿着自定义轴旋转 45 deg 为角度

  • 默认可见的 backface-visibility: visible; 不可见 backface-visibility: hidden;

  • 旋转位置起点 transform-origin: left;

缩放 scale3d scaleX scaleY scaleZ

动画animation

animation: name duration timing-function delay iteration-count direction;

animation-name 规定需要绑定到选择器的 keyframe 名称。。 animation-duration 规定完成动画所花费的时间,以秒或毫秒计。 animation-timing-function 规定动画的速度曲线。 animation-delay 规定在动画开始之前的延迟。 animation-iteration-count 规定动画应该播放的次数。 animation-direction 规定是否应该轮流反向播放动画。

<style> 
div{
width:100px;
height:100px;
background:blue;
position:relative;
animation:mymove 2s infinite;
}
@keyframes mymove
{
from {left:0px;}
to {left:200px;}
}
</style>
<body>
<div></div>
</body>

上一篇:【html5与css3】旋转


下一篇:50. Pow(x, n)