变换属性

最后更新:2026-09-13

transform 变换属性

transform 用于对元素应用 2D 或 3D 几何变换,包括平移、旋转、缩放、倾斜等操作。变换发生在渲染阶段,不会影响文档流布局,因此是实现高性能视觉效果的常用手段。transform 是 CSS 动画和交互设计的核心属性之一。

分类
初始值none
继承
适用于all
可动画transform
CSS 版本CSS3
状态标准

📝 语法

transform: none | <transform-function>+;
/* <transform-function> = translate() | translate3d() | rotate() | rotate3d() | scale() | skew() | matrix() | perspective() 等 */

⚙️ 取值

类型描述
none关键字无变换
<transform-list>类型变换函数列表:translate/rotate/scale/skew

▶ 示例

编辑下方代码,在 playground 中查看实时效果:

🌐 浏览器支持

浏览器 ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
transform v36 v12 v16 v9 v23
所有主流浏览器均支持
提示: 多个变换函数写在一个 transform 中用空格分隔,执行顺序从右到左(即最右边的函数先应用),顺序不同结果可能不同。
注意: transform 会创建新的堆叠上下文(stacking context)和包含块,可能影响 position: fixed 子元素的定位基准。

❓ 常见问题

Qtransform 会影响周围元素的布局吗?
A不会。transform 属于合成阶段(compositing)的视觉变换,元素在文档流中仍占据原来的空间和尺寸,周围元素完全不受影响,因此也不会触发重排,这也是 transform 动画性能优于 left、top 等布局属性的根本原因。注意它会让元素成为 fixed 子元素的定位基准。
Q2D transform 和 3D transform 有什么区别?
A2D 变换只在 X、Y 轴平面内进行,如 translate()、rotate()、scale()、skew();3D 变换增加 Z 轴,使用 translateZ、rotateX 等函数,通常需要父元素设置 perspective 提供透视,并配合 preserve-3d 保留子元素 3D 空间,才能看到立体效果。
Q为什么说 transform 动画性能好?会触发 GPU 加速吗?
Atransform 动画不会触发布局和重绘,浏览器会把元素提升到独立的合成层(compositor layer),由 GPU 负责合成,即使页面滚动或与其他元素交叠也能保持流畅。相比 left/top 每帧都触发重排,transform 是实现 60fps 动画的首选,配合 will-change 效果更稳定。
Qtransform 中多个函数的执行顺序是怎样的?先写 translate 和先写 rotate 有区别吗?
A多个函数从右到左依次应用,最右边的先生效。例如 transform: translate(20px) rotate(45deg) 是先旋转再平移,元素沿旋转后方向移动;而 rotate(45deg) translate(20px) 先平移再旋转,结果完全不同。

📚 相关教程

Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏