面试题:CSS3 中的 transform 有哪些属性?

面试题:CSS3 中的 transform 有哪些属性?

transform 是 CSS3 中用于对元素进行变形的强大属性,它可以在不改变文档流的情况下,对元素进行平移、旋转、缩放、倾斜等操作,广泛应用于动画、交互效果和响应式设计中。


一、transform 的基本语法

.element {
  transform: function1() function2() ...;
}

可以同时应用多个变换函数,按从左到右的顺序依次执行。


二、transform 的常用函数(属性)

✅ 1. 2D 变换函数

函数描述示例
translate(x, y)在 X 和 Y 轴上平移元素transform: translate(50px, 20px);
translateX(x)仅在 X 轴平移transform: translateX(100px);
translateY(y)仅在 Y 轴平移transform: translateY(-30px);
scale(sx, sy)在 X 和 Y 轴缩放(1.0 为原大小)transform: scale(1.5, 0.8);
scaleX(sx)仅在 X 轴缩放transform: scaleX(2);
scaleY(sy)仅在 Y 轴缩放transform: scaleY(0.5);
rotate(angle)旋转元素(单位:deg、rad)transform: rotate(45deg);
skew(ax, ay)在 X 和 Y 轴倾斜(扭曲)transform: skew(10deg, 5deg);
skewX(ax)仅在 X 轴倾斜transform: skewX(20deg);
skewY(ay)仅在 Y 轴倾斜transform: skewY(15deg);

🔹 translate 不影响其他元素布局(脱离正常流感知)
🔹 rotate 默认以元素中心为旋转点


✅ 2. 3D 变换函数

要使用 3D 变换,需先设置 transform-style: preserve-3dperspective

函数描述示例
translateZ(z)在 Z 轴平移(靠近或远离屏幕)transform: translateZ(50px);
translate3d(x, y, z)同时在 X、Y、Z 轴平移transform: translate3d(10px, 20px, 30px);
scaleZ(sz)在 Z 轴缩放transform: scaleZ(1.5);
scale3d(sx, sy, sz)在三个轴上缩放transform: scale3d(1.2, 1.0, 0.8);
rotateX(angle)绕 X 轴旋转(翻转)transform: rotateX(45deg);
rotateY(angle)绕 Y 轴旋转(翻书效果)transform: rotateY(60deg);
rotateZ(angle)绕 Z 轴旋转(等同于 rotate()transform: rotateZ(30deg);
rotate3d(x, y, z, angle)按自定义向量旋转transform: rotate3d(1, 1, 0, 45deg);
perspective(length)为元素或子元素设置透视距离transform: perspective(500px) rotateY(45deg);

🔹 perspective 控制 3D 效果的“景深”,值越小,透视感越强
🔹 transform-style: preserve-3d 用于保持子元素的 3D 空间


三、相关 CSS 属性(面试加分点)

除了 transform 本身,还有几个关键属性配合使用:

属性作用
transform-origin定义变换的原点(默认是元素中心)
如:transform-origin: top left;transform-origin: 50% 50%;
transform-style控制子元素是否在 3D 空间中渲染
flat(默认)或 preserve-3d
perspective设置透视距离,影响 3D 元素的视觉深度
通常作用于父容器:
perspective: 1000px;
perspective-origin定义透视的观察点(默认是中心)
如:perspective-origin: center bottom;
backface-visibility控制元素背面是否可见
visiblehidden(常用于翻转卡片)

四、常见使用场景

场景使用的 transform 函数
按钮悬停放大scale(1.05)
元素平移动画translateX(100px)
旋转图标(如加载动画)rotate(360deg)
卡片翻转效果rotateY(180deg) + preserve-3d
3D 旋转轮播rotateY() + translateZ()
倾斜导航菜单skewX(10deg)

五、注意事项

  1. 硬件加速transform 会触发 GPU 加速,性能优于直接修改 top/left
  2. 不影响文档流:变换后的元素仍占据原始空间。
  3. 组合使用:多个函数可链式调用,注意执行顺序。
  4. 浏览器兼容性:现代浏览器支持良好,老版本需加前缀(如 -webkit-transform)。

💬 一句话总结:

transform 提供了丰富的 2D 和 3D 变换能力,包括平移、旋转、缩放、倾斜等函数,配合 transform-originperspective 等属性,可实现高性能的视觉效果和交互动画。”

在面试中,能结合 动画、3D 卡片翻转、性能优化 等实际场景说明,会显得你具备实战经验。

THE END
喜欢就支持一下吧
点赞6 分享