返回

立体理解 3D 立方体中 perspective 和 translateZ 的关系

前端

透视(perspective)

透视是一种创建错觉的技巧,让物体看起来具有三维深度。在 3D 立方体中,透视通过向 vanishing point 汇聚平行线来实现。vanishing point 是一个想象中的点,所有平行线都会在该点汇聚。透视的强度由 perspective 属性控制,该属性的值越大,透视效果越强。

平移 Z 轴(translateZ)

translateZ 属性用于将元素沿 Z 轴平移。Z 轴是垂直于屏幕的轴。translateZ 属性的值为正时,元素会向屏幕外移动;translateZ 属性的值为负时,元素会向屏幕内移动。

perspective 和 translateZ 的关系

perspective 和 translateZ 属性协同工作来创建 3D 立方体。perspective 属性创建透视效果,而 translateZ 属性用于将元素放置在三维空间中。通过组合使用这两个属性,可以创建逼真的 3D 立方体。

示例

以下示例演示了如何使用 perspective 和 translateZ 属性创建 3D 立方体:

<!DOCTYPE html>
<html>
<head>

<style>
#cube {
  width: 200px;
  height: 200px;
  position: relative;
  transform-style: preserve-3d;
  perspective: 500px;
}

#cube .face {
  position: absolute;
  width: 200px;
  height: 200px;
  border: 1px solid black;
}

#cube .face.front {
  transform: translateZ(100px);
}

#cube .face.back {
  transform: translateZ(-100px);
}

#cube .face.left {
  transform: translateX(-100px) translateZ(50px);
}

#cube .face.right {
  transform: translateX(100px) translateZ(50px);
}

#cube .face.top {
  transform: translateY(-100px) translateZ(50px);
}

#cube .face.bottom {
  transform: translateY(100px) translateZ(50px);
}
</style>
</head>
<body>
<div id="cube">
  <div class="face front">Front</div>
  <div class="face back">Back</div>
  <div class="face left">Left</div>
  <div class="face right">Right</div>
  <div class="face top">Top</div>
  <div class="face bottom">Bottom</div>
</div>
</body>
</html>

这个示例创建了一个简单的 3D 立方体。立方体由六个面组成:正面、背面、左面、右面、顶部和底部。每个面都是一个 200px x 200px 的正方形。

transform-style: preserve-3d; 属性指定子元素应该被视为 3D 元素。这允许我们使用 perspective 和 translateZ 属性来创建 3D 效果。

perspective: 500px; 属性设置透视的强度。值越大,透视效果越强。

translateZ 属性用于将元素沿 Z 轴平移。在示例中,我们使用 translateZ 属性来将正面和平面分别向屏幕外和屏幕内移动 100px。我们还使用 translateX 属性来将侧面向左或向右移动 100px。

结语

perspective 和 translateZ 属性是创建 3D 效果的强大工具。通过组合使用这两个属性,可以创建逼真的 3D 立方体和其他 3D 形状。