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:自定义贝塞尔曲线
鼠标悬停查看动画效果
(default)
复合变换
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 位移也可以使用 translateX、translateY、translateZ 或 translate3d 来实现,
结合 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;}定义关键帧也可以使用 from 和 to 关键字,示例代码:
@keyframes move { from { transform: translateX(0); } to { transform: translateX(100px); }}animation 是应用动画的属性,示例代码:
.box { /* animation: 动画名称 动画时长 速度曲线 延迟时间 播放次数 播放方向 执行完毕状态 动画名称和动画时长是必填项,其他属性是可选的 */ animation: move 2s ease-in-out;}这些属性也可以单写
| 属性名 | 说明 | 默认值 | 可选值 |
|---|---|---|---|
| animation-timing-function | 速度曲线 | ease | ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier 等 |
| animation-delay | 延迟时间 | 0s | 可设为负值,负值表示跳过动画 |
| animation-iteration-count | 播放次数 | 1 | infinite 表示无限播放 |
| animation-direction | 播放方向 | normal | normal, reverse, alternate |
| animation-fill-mode | 执行完毕状态 | none | none, forwards, backwards, both |
| animation-play-state | 播放状态 | running | running, paused |
逐帧动画
速度曲线 除了常见的 linear, ease, cubic-bezier等,还包含 steps() 函数, steps() 是 CSS 动画中用于控制动画分段执行的计时函数,它通过将动画分割为离散的步骤,实现类似传统帧动画(逐帧动画)的跳跃效果。示例代码:
.steps { /* 逐帧动画,参数为动画分段数 */ animation: move 2s steps(5) infinite;}