Skip to content

CSS3 3D 转换(3D Transforms)是在 CSS 中允许元素在三维空间内进行旋转、缩放、移动和倾斜等视觉变换的属性集合。它们允许开发者创建更加复杂和生动的用户界面效果。

常用 3D 转换属性

1. transform-style 属性

transform-style 属性用于定义嵌套元素如何在 3D 空间中呈现。默认值是 flat,即所有子元素都在同一平面上。

css
transform-style: flat;   /* 所有子元素都在同一平面上 */
transform-style: preserve-3d;  /* 子元素在 3D 空间中保留其自己的形状 */

2. 3D 转换函数

CSS3 提供了一些 3D 转换函数,与 2D 转换类似,但可以在三维空间中操作元素。

旋转(rotateX, rotateY, rotateZ)

rotateX()rotateY()rotateZ() 函数分别围绕 X 轴、Y 轴和 Z 轴旋转元素。

css
transform: rotateX(45deg);   /* 绕 X 轴顺时针旋转 45 度 */
transform: rotateY(30deg);   /* 绕 Y 轴顺时针旋转 30 度 */
transform: rotateZ(-20deg);  /* 绕 Z 轴逆时针旋转 20 度 */
缩放(scaleX, scaleY, scaleZ)

scaleX()scaleY()scaleZ() 函数分别控制元素在 X 轴、Y 轴和 Z 轴的缩放。

css
transform: scaleX(1.5);   /* 在 X 轴方向上放大 1.5 倍 */
transform: scaleY(0.8);   /* 在 Y 轴方向上缩小到 80% */
transform: scaleZ(2);     /* 在 Z 轴方向上放大 2 倍 */
平移(translateX, translateY, translateZ)

translateX()translateY()translateZ() 函数分别在 X 轴、Y 轴和 Z 轴方向上移动元素。

css
transform: translateX(50px);    /* 沿 X 轴方向移动 50px */
transform: translateY(-20px);   /* 沿 Y 轴方向向上移动 20px */
transform: translateZ(30px);    /* 沿 Z 轴方向移动 30px */
倾斜(skewX, skewY)

skewX()skewY() 函数分别控制元素在 X 轴和 Y 轴的倾斜角度。

css
transform: skewX(15deg);   /* 沿 X 轴方向倾斜 15 度 */
transform: skewY(-10deg);  /* 沿 Y 轴方向倾斜 -10 度 */

3. 透视(perspective)

perspective 属性定义了观察者与元素之间的距离,以及在 3D 空间中看到的视觉效果。

css
perspective: 1000px;   /* 定义透视点在 1000px 处 */

4. 透视原点(perspective-origin)

perspective-origin 属性定义了透视效果的原点位置。

css
perspective-origin: 50% 50%;   /* 透视点位于元素的中心 */
perspective-origin: left top;  /* 透视点位于元素的左上角 */

示例

以下是一个简单的示例,展示了如何使用 CSS3 3D 转换属性创建动态效果:

html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS3 3D 转换示例</title>
<style>
    .cube {
        width: 100px;
        height: 100px;
        background-color: #4CAF50;
        margin: 20px;
        transform-style: preserve-3d;  /* 保留子元素在 3D 空间中的形状 */
        transform: rotateX(45deg) rotateY(45deg);  /* 绕 X 轴和 Y 轴同时旋转 45 度 */
        transition: transform 0.5s;  /* 添加过渡效果 */
    }
</style>
</head>
<body>
    <div class="cube"></div>
</body>
</html>

在这个示例中,.cube 元素定义了一个正方体,通过 rotateX()rotateY() 函数实现了绕 X 轴和 Y 轴的旋转效果。通过修改 transform 属性,可以实现不同的视觉效果,如旋转、缩放和倾斜等。