css

transform 属性

transform 属性简介

Posted by Starrynight on 2024-02-21
Estimated Reading Time 2 Minutes
Words 657 In Total
Viewed Times

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
2
3
4
5
6
.card {
transition: transform 0.3s ease;
}
.card:hover {
transform: scale(1.1) rotate(5deg);
}

@keyframes 动画配合:

1
2
3
4
5
6
7
@keyframes rotateMe {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.loader {
animation: rotateMe 2s linear infinite;
}

🧠 transform 的特点和注意事项

  1. 不会影响文档流:只会影响视觉呈现,不会影响其它元素的位置。
  2. 性能优越:通常由 GPU 加速,适合用在动画上。
  3. transform-origin:改变变换的参考点(默认是元素中心):
    1
    transform-origin: top left;
  4. 与 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
    3
    button: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 是实现各种炫酷动画和交互动效的灵魂属性,搭配 transitionanimation 可以实现丰富的视觉体验!



如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !