CSS 动画

1. 2D/3D 转换 transform

通过2D、3D转换,能够对元素进行移动、缩放、转动、拉长或拉伸。

transform: 转换属性

1.1 2D 转换

缩放

/*  x:表示水平方向的缩放倍数。y:表示垂直方向的缩放倍数 */
transform: scale(x, y);

/* 等比例缩放 */
transform: scale(x);

位移

transform: translate(水平位移, 垂直位移);
transform: translate(-50%, -50%);

参数为百分比,相对于自身移动;如果只写一个值,则表示水平移动。

旋转

/* 正值 顺时针;负值:逆时针 */
transform: rotate(角度);
transform: rotate(45deg);

rotate 旋转时,默认是以盒子的正中心为坐标原点的。如果想改变旋转的坐标原点,可以用transform-origin属性。

skew

matrix(复合功能)

举例:借助 rotate 和 transform-origin 实现扑克牌展开

1.2 3D 转换

旋转:rotateX、rotateY、rotateZ

移动:translateX、translateY、translateZ

3D坐标系(左手坐标系)**:**左手握住旋转轴,竖起拇指指向旋转轴的正方向,正向就是其余手指卷曲的方向。

2. 过渡 transition

过渡是可以实现元素不同状态间的平滑过渡(补间动画),经常用来制作动画效果。

transition 属性拆分:

  • transition-property:过渡属性,如果设为 all,则所有的属性都发生过渡

  • transition-duration:过渡的持续时间

  • transition-timing-function :运动曲线

    • linear 线性

    • ease 减速

    • ease-in 加速

    • ease-out 减速

    • ease-in-out 先加速后减速

  • transition-delay:过渡延迟时间

3. 动画 animation

动画是 CSS3 中具有颠覆性的特征,可通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。

  1. 通过@keyframes定义动画;

  2. 将这段动画通过百分比,分割成多个节点,然后各节点中分别定义各属性;

  3. 在指定元素里,通过 animation 属性调用动画。

animation-timing-function如果设置为steps(),则表示动画不是连续执行,而是间断地分成几步执行,应用于逐帧动画等。

举例:通过animation-timing-functionsteps()制作时钟指针

如果你对内容有任何疑问,欢迎提交 ❕issues✉️ email

最后更新于

这有帮助吗?