Background

import ’./transitions.css’

transform#

2D转换#

平移#

平移 (translate) 可以在水平方向和垂直方向上移动元素,不改变元素的布局。示例代码:

.translate {
/* x y 同时平移 */
transform: translate(50px, 100px);
/* 或者分别设置水平和垂直方向的平移,可使用百分比(相对于元素自身的宽度和高度) */
transform: translateX(50px);
transform: translateY(50%);
}

旋转#

旋转 (rotate) 可以围绕元素的中心点旋转元素。示例代码:

.rotate {
/* 旋转角度,正值表示顺时针旋转,负值表示逆时针旋转 */
transform: rotate(45deg);
/* 指定旋转的中心点,默认是元素的中心点 */
transform-origin: left top;
/* 也可以使用百分比和px单位,50% 50% 表示元素的中心点 */
transform-origin: 50% 50%;
}

缩放#

缩放 (scale) 可以增加或减少元素的尺寸。示例代码:

.scale {
/* 同时设置水平和垂直方向的缩放比例 */
transform: scale(2, 2);
/* 或者分别设置水平和垂直方向的缩放比例 */
transform: scaleX(2);
transform: scaleY(2);
}

倾斜#

倾斜 (skew) 可以在水平方向和垂直方向上倾斜元素。示例代码:

.skew {
/* 同时设置水平和垂直方向的倾斜角度,如果只设置一个值,默认是水平方向的倾斜角度 */
transform: skew(45deg, 45deg);
/* 或者分别设置水平和垂直方向的倾斜角度 */
transform: skewX(45deg);
transform: skewY(45deg);
}

过渡#

过渡 (transition) 可以为元素的变化添加平滑的动画效果。示例代码:

.transition {
/* 为所有属性添加过渡效果 */
transition: all 0.3s ease-in-out;
/* 或者为特定属性添加过渡效果 */
transition: transform 0.3s ease-in-out;
}

常见的速度曲线:

  • ease:默认值,先慢后快
  • linear:匀速
  • ease-in:先慢后快
  • ease-out:先快后慢
  • ease-in-out:先慢后快再慢
  • cubic-bezier:自定义贝塞尔曲线

鼠标悬停查看动画效果

ease
(default)
ease-in
ease-out
ease-in-out
linear

复合变换#

transform 可以同时应用多个变换,多个变换之间用空格隔开,执行顺序是从右到左。示例代码:

.transform {
transform: translate(50px, 100px) rotate(45deg) scale(2, 2);
}

3D转换#

旋转#

旋转 (rotate) 可以改变元素在 3D 空间中的角度。示例代码:

.rotate {
/* 3D 旋转,参数为 x y z 轴的旋转角度 */
transform: rotateX(45deg) rotateY(45deg) rotateZ(45deg);
}

加上透视效果,就能模拟 3D 空间中的近大远小的旋转效果。示例代码:

.rotate {
/* 3D 旋转,perspective 表示透视距离,rotateX 表示绕 x 轴旋转 */
transform: perspective(500px) rotateY(45deg);
}

还可使用 backface-visibility 来控制元素的背面是否可见。示例代码:

.backface-visibility {
/* 元素的背面不可见 */
backface-visibility: hidden;
}

位移#

同样的,3D 位移也可以使用 translateXtranslateYtranslateZtranslate3d 来实现, 结合 perspective 可以实现 3D 空间中的位移效果,实现近大远小的位移效果。示例代码:

.translate {
/* 3D 位移,perspective 表示透视距离,translateX 表示在 x 轴上的位移 */
transform: perspective(500px) translate3d(50px, 50px, 50px);
}

也可以开启父容器的 perspective 属性,来实现 3D 空间中的位移效果。示例代码:

.parent {
/* 开启 3D 变换 */
transform-style: preserve-3d;
/* 开启父容器的透视效果 */
perspective: 500px;
}

动画#

关键帧动画#

关键帧(Keyframe)是动画和视频制作中用于定义动作或状态变化的核心节点,它决定了动画的起始、转折和结束状态。中间帧(插帧)通过算法自动生成,形成连贯的动画效果。

动画的使用:先定义关键帧,再应用动画。示例代码:

@keyframes move {
0% {
transform: translateX(0);
}
50% {
transform: translateX(50px);
}
100% {
transform: translateX(100px);
}
}
.box {
/* 应用动画 */
animation: move 2s ease-in-out;
}

定义关键帧也可以使用 fromto 关键字,示例代码:

@keyframes move {
from {
transform: translateX(0);
}
to {
transform: translateX(100px);
}
}

animation 是应用动画的属性,示例代码:

.box {
/* animation: 动画名称 动画时长 速度曲线 延迟时间 播放次数 播放方向 执行完毕状态
动画名称和动画时长是必填项,其他属性是可选的 */
animation: move 2s ease-in-out;
}

这些属性也可以单写

属性名说明默认值可选值
animation-timing-function速度曲线easeease, linear, ease-in, ease-out, ease-in-out, cubic-bezier
animation-delay延迟时间0s可设为负值,负值表示跳过动画
animation-iteration-count播放次数1infinite 表示无限播放
animation-direction播放方向normalnormal, reverse, alternate
animation-fill-mode执行完毕状态nonenone, forwards, backwards, both
animation-play-state播放状态runningrunning, paused

逐帧动画#

速度曲线 除了常见的 linear, ease, cubic-bezier等,还包含 steps() 函数, steps() 是 CSS 动画中用于控制动画分段执行的计时函数,它通过将动画分割为离散的步骤,实现类似传统帧动画(逐帧动画)的跳跃效果。示例代码:

.steps {
/* 逐帧动画,参数为动画分段数 */
animation: move 2s steps(5) infinite;
}
前端学习:交互式动效设计
https://rinne05.top/blog/technology/front-end/transform-animation/
作者
发布于
11/1/2025
许可协议
CC BY-NC-SA 4.0

主题设置

主题模式
主题色
透明度
模糊
© 2026 霖 采用 CC BY-NC-SA 4.0 许可 RSS
公安网安备案图标 公安网安备案号: 豫公网安备41040202000294号 ICP备案号: 豫ICP备2025156598号-1
输入以搜索...
通过 Fuse.js 搜索