使用 transform: translate() 结合 CSS animation 可实现高效流畅的位移动画。1. transform: translate() 通过改变元素坐标空间实现位移,仅触发合成层变化,避免重排重绘,性能优于 top/left 修改;2. 利用 @keyframes 定义动画关键帧,配合 animation 属性控制持续时间、缓动函数和循环次数,实现如来回滑动等效果;3. 通过添加 will-change: transform 或 transform: translateZ(0) 启用硬件加速,提升渲染性能,同时避免过多并发动画以减少资源消耗。掌握这三点可构建顺滑且高效的位移动画。

要实现流畅的位移动画,CSS 的 animation 与 transform: translate() 结合是最佳实践。这种方式性能好,避免重排重绘,动画更顺滑。
1. 使用 transform: translate() 实现位移
transform 作用于元素的坐标空间,translate() 可以在不脱离文档流的前提下移动元素。相比改变 left、top 等属性,它只触发合成层变化,效率更高。
常见用法:- translateX(50px):水平移动
- translateY(30px):垂直移动
- translate(50px, 20px):同时设置 X 和 Y 方向
2. 定义 animation 控制动画流程
CSS animation 通过关键帧(@keyframes)定义动画过程,结合 transform 实现平滑位移。
示例代码:
.element {
animation: slide 2s ease-in-out infinite;
}
@keyframes slide {
0% {
transform: translateX(0);
}
50% {
transform: translateX(100px);
}
100% {
transform: translateX(0);
}
}
这段代码让元素在 2 秒内来回滑动。ease-in-out 控制速度曲线,infinite 表示无限循环。
立即学习“前端免费学习笔记(深入)”;
3. 提升动画性能的小技巧
为了确保动画运行流畅,可以提前创建合成层,减少运行时开销。
建议做法:- 给动画元素添加 transform: translateZ(0) 或 will-change: transform,提示浏览器启用硬件加速
- 避免使用 top/left 改变位置,优先使用 translate
- 控制动画频率,避免过多同时运行的动画消耗资源
基本上就这些。掌握 transform 位移 + animation 控制节奏,就能做出高效又好看的移动效果。










