使用 transform: translate 结合 transition 可实现高性能位移动画,不触发重排,仅通过合成层变化完成。首先设置 transition 指定 transform 属性及持续时间,再通过 :hover 或 JavaScript 改变 translate 值,浏览器自动插值生成动画。例如 .element:hover { transform: translate(100px); } 可实现悬停时向右移动 100px 的平滑效果。支持多轴位移 translate(20px, 10px) 或单独使用 translateX()/translateY()。结合 will-change: transform 可进一步提升性能,避免对 left、top 等布局属性做过渡以减少重排开销。该方法广泛用于按钮反馈、菜单滑出等交互场景,是现代前端动效的推荐实践。

使用 CSS 的 transform: translate 结合 transition 可以实现平滑的位移动画。这种方式性能好,不会触发重排(reflow),只涉及合成层的变换。
基本原理
translate() 是 transform 的一个函数,用于在不改变布局的情况下移动元素。结合 transition 可以让位移过程有过渡效果,比如缓慢移动而不是瞬间跳转。
实现步骤
要实现位移动画,需设置以下几点:
- 给元素添加 transition 属性,指定要过渡的属性(如 transform)和持续时间
- 通过伪类(如 :hover)或 JavaScript 改变元素的 transform: translate 值
- 浏览器会自动在两个 translate 状态之间插值,形成动画
.element {
transform: translate(0);
transition: transform 0.3s ease;
}
.element:hover {
transform: translate(100px);
}
常用场景与技巧
实际开发中常用于按钮反馈、菜单滑出、图片位移等交互效果。
立即学习“前端免费学习笔记(深入)”;
- 可以同时在 X 和 Y 轴位移:
translate(20px, 10px) - 使用
transform: translateX()或translateY()单独控制方向 - 配合
will-change: transform提升动画性能 - 避免对
left、top等布局属性做 transition,会影响性能
基本上就这些。用 transform + transition 实现位移简单高效,是现代前端动效的常用方式。










