CSS 3D 转换(3D Transform) 在二维平面的基础上增加了 Z 轴,让元素可以:
所有 3D 效果依赖于 transform 属性。
CSS 中的 3D 坐标:
X 轴:横向 → 右为正
Y 轴:纵向 → 下为正
Z 轴:垂直屏幕 → 朝向你为正(往外)
没有 perspective(透视),3D 就看不出来。
.parent {
perspective: 800px;
}
含义:
transform: perspective(800px) rotateY(60deg);
和父容器 perspective 效果略有不同,不如父容器自然,通常不推荐。
.parent {
perspective-origin: center top;
}
决定观察者视线方向。
transform: translateZ(100px);
三维平移
transform: translate3d(50px, 0, 100px);
transform: rotateX(60deg);
transform: rotateY(60deg);
等同 2D rotate。
绕任意轴旋转
transform: rotate3d(1, 1, 0, 45deg);
transform: scaleZ(2);
transform: scale3d(1, 1, 2);
由于 Z 轴缩放不直观,较少单独使用。
.parent {
transform-style: preserve-3d;
}
含义:
要做 3D 立方体、3D 翻转卡片,必须加 preserve-3d。
.box {
backface-visibility: hidden;
}
用于卡片翻转时隐藏反面镜像。
没有 perspective 就没有真实 3D 效果
rotateX/rotateY 会看起来像扁平变形。
transform-style 只对子元素有效
父元素自身的 transform-style 不影响自身。
多重 3D 变换注意顺序 依然是 从右到左 执行:
transform: translateZ(100px) rotateY(45deg);
translateZ 与 scale 有时会一起使用以制造深度感
Safari 与部分移动端需要加前缀(旧代码)
-webkit-transform-style: preserve-3d;