translateZ() - Z 轴平移
控制元素在 3D 空间中的前后位置
语法说明
transform: translateZ(z);
- z - Z 轴方向的偏移量
- 正值:向前移动(靠近观察者),元素看起来更大
- 负值:向后移动(远离观察者),元素看起来更小
- 重要:必须在父元素上设置
perspective才能看到效果
示例 1:基础 Z 轴移动
悬停方块查看 Z 轴移动效果
后退
-100px
-100px
原位
0px
0px
前进
50px
50px
/* 父容器必须设置 perspective */
.container {
perspective: 800px;
}
/* Z 轴移动 */
.box {
transform: translateZ(0px); /* 原位 */
}
.box:hover {
transform: translateZ(150px); /* 向前移动 */
}
.box-back {
transform: translateZ(-100px); /* 向后移动 */
}
示例 2:3D 层叠卡片
悬停查看卡片在 Z 轴上的层叠效果
1
2
3
.card-stack {
transform-style: preserve-3d;
transform: rotateY(-15deg) rotateX(10deg); /* 旋转一下才能看到层叠 */
}
.card:nth-child(1) { transform: translateZ(0px); }
.card:nth-child(2) { transform: translateZ(-50px); }
.card:nth-child(3) { transform: translateZ(-100px); }
.card-stack:hover .card:nth-child(1) { transform: translateZ(100px); }
.card-stack:hover .card:nth-child(2) { transform: translateZ(50px); }
.card-stack:hover .card:nth-child(3) { transform: translateZ(0px); }
示例 3:3D 按钮效果
点击和悬停按钮查看 3D 效果
.btn-3d {
transition: all 0.3s ease;
}
.btn-3d:hover {
transform: translateZ(20px);
box-shadow: 0 15px 30px rgba(16, 185, 129, 0.4);
}
.btn-3d:active {
transform: translateZ(5px); /* 按下效果 */
}
示例 4:交互式演示
拖动滑块调整 translateZ 值
0px
💡 重要说明:
- 必须配合 perspective:父元素必须设置 perspective,否则看不到效果
- 正值 vs 负值:正值(如 100px)向前移动,看起来更大;负值(如 -100px)向后移动,看起来更小
-
与 translate3d() 的关系:
translateZ(100px)=translate3d(0, 0, 100px) - 性能优化:translateZ(0) 常用于开启硬件加速
⚡ 性能技巧:
transform: translateZ(0)可以触发 GPU 加速- 常用于优化动画性能,即使不需要 3D 效果
- 现代浏览器中,
will-change: transform是更好的选择