transform 属性简介
transform 是一个 CSS 属性,用于对元素进行 二维(2D)或三维(3D)空间变换,而不影响页面的布局结构。常用于实现动画、过渡、旋转、缩放、位移等效果。
✨ transform 的语法
1 | transform: none | <transform-function>+; |
多个变换函数可以连写,用空格分隔,执行顺序是从左到右。
🔧 常用 transform 函数(2D)
| 函数名 | 说明 | 示例 | 效果 |
|---|---|---|---|
translate(x, y) |
沿 x 和 y 方向平移 | translate(100px, 50px) |
元素向右100px、向下50px |
translateX(x) |
沿 x 轴平移 | translateX(100px) |
向右100px |
translateY(y) |
沿 y 轴平移 | translateY(-50px) |
向上50px |
rotate(angle) |
旋转元素 | rotate(45deg) |
顺时针旋转45° |
scale(x, y) |
缩放元素 | scale(1.2, 0.8) |
x轴放大1.2倍,y轴缩小0.8倍 |
scaleX(x) |
沿 x 轴缩放 | scaleX(2) |
宽度变为原来的2倍 |
scaleY(y) |
沿 y 轴缩放 | scaleY(0.5) |
高度变为原来的0.5倍 |
skew(xAngle, yAngle) |
倾斜元素 | skew(30deg, 10deg) |
沿x倾斜30°,y倾斜10° |
skewX(xAngle) |
x轴方向倾斜 | skewX(45deg) |
|
skewY(yAngle) |
y轴方向倾斜 | skewY(10deg) |
|
matrix(a, b, c, d, e, f) |
矩阵变换 | matrix(1, 0, 0, 1, 100, 100) |
高级组合用法,不建议手写 |
🎥 动画中常配合使用
与 transition 一起使用:
1 | .card { |
与 @keyframes 动画配合:
1 | @keyframes rotateMe { |
🧠 transform 的特点和注意事项
- 不会影响文档流:只会影响视觉呈现,不会影响其它元素的位置。
- 性能优越:通常由 GPU 加速,适合用在动画上。
- transform-origin:改变变换的参考点(默认是元素中心):
1
transform-origin: top left;
- 与 z-index 无关:但可以配合
transform: translateZ(0)触发硬件加速,解决渲染卡顿问题。
🎮 transform 与 3D 变换(进阶)
如果你需要使用 3D 效果,还可以使用如下方法:
| 函数 | 示例 | 效果 |
|---|---|---|
rotateX(30deg) |
绕 X 轴旋转 | |
rotateY(60deg) |
绕 Y 轴旋转 | |
rotateZ(45deg) |
等同于 rotate(45deg) |
|
perspective(1000px) |
设置透视效果,用于 3D 效果更真实 |
⚠️ 使用 3D 变换时通常需要配合:
1 | transform-style: preserve-3d; |
🧩 transform 小技巧
-
居中元素(配合绝对定位):
1
2
3
4
5
6.center {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
} -
按钮点击缩放反馈:
1
2
3button:active {
transform: scale(0.95);
} -
滑动菜单进入动画:
1
2
3
4
5
6
7.menu {
transform: translateX(-100%);
transition: transform 0.3s ease;
}
.menu.show {
transform: translateX(0);
}
✅ 总结一句话:
transform是实现各种炫酷动画和交互动效的灵魂属性,搭配transition和animation可以实现丰富的视觉体验!
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !