位移属性

最后更新:2026-09-13

translate 位移属性

translate 是 transform 的一个独立属性,用于在 2D 或 3D 空间中移动元素的位置。与 transform: translate() 效果相同,但作为独立属性可以单独控制位移,而不影响其他变换(如旋转、缩放),在需要分别动画化不同变换时非常实用。

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

📝 语法

translate: none | <length-percentage> [<length-percentage> [<length>]?]?;

⚙️ 取值

类型描述
none关键字无位移
<length> | <percentage>类型位移值(可指定 x y z)

▶ 示例

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

🌐 浏览器支持

浏览器 ChromeChrome EdgeEdge FirefoxFirefox SafariSafari OperaOpera
translate v57 v12 v52 v10.1 v44
所有主流浏览器均支持
提示: translate 只接受 1~3 个值:1 个值只移动 X 轴;2 个值分别移动 X、Y 轴;3 个值可额外移动 Z 轴(需配合 perspective 才能看到效果)。
提示: translate 使用百分比时,基准是元素自身的尺寸,而非父元素,这点与 left/top 不同。

❓ 常见问题

Qtranslate 和 left/top 有什么区别?
Atranslate 只做视觉位移,不改变文档流,不触发重排,浏览器会把它放到合成层由 GPU 处理,动画流畅;left/top 改变布局位置,每一帧都触发重排和重绘,性能差且会推动周围元素。动画和 hover 位移场景应优先使用 translate 或 transform: translate()。
Qtranslate 作为独立属性和 transform: translate() 有性能差异吗?
A两者渲染结果和性能几乎相同,都会进入合成层。真正的区别在于:独立属性 translate 可以被单独动画化,不会覆盖元素上已有的 transform 值(如旋转、缩放),适合分别控制不同变换;而 transform: translate() 写在同一个属性里,改动时必须带上全部函数。
Qtranslate 的百分比是相对于什么的?为什么和 left 不一样?
Atranslate 的百分比相对于元素自身的尺寸,而 left/top 的百分比相对于包含块。例如 translate: 100% 表示向右移动自身宽度的一倍。利用这个特性,配合 position: absolute 加 translate: -50% -50% 就能轻松实现元素水平垂直居中,无需知道元素尺寸。
QtranslateZ 为什么看不到效果?
AtranslateZ 沿 Z 轴位移,默认视图没有透视,位移不会改变元素的投影大小,看起来就像没动。需要给父元素设置 perspective,或在 transform 中带上 perspective() 函数,才能看到近大远小的纵深变化。同理,translate 的第三个值只在 3D 场景下有意义。

📚 相关教程

Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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