CSS3 3D转换

CSS3 3D转换完全指南 – 小白入门

CSS3 3D转换完全指南

专为编程小白设计的3D转换知识汇总 – 从零开始掌握3D效果

3D转换基础概念

📌 什么是3D转换?

CSS3 3D转换允许你在三维空间中操作HTML元素,就像它们是真实的三维物体一样。你可以旋转、缩放、移动元素,创建卡片翻转、立方体、3D画廊等炫酷效果。

🧩 核心概念:

1. 3D坐标系:想象网页是一个三维空间,有X轴(左右)、Y轴(上下)、Z轴(前后)

2. 变换函数:告诉元素如何移动或变形

3. 透视(perspective):创建景深效果,让物体近大远小

4. 3D容器:设置父元素为3D空间

3D坐标系

3D坐标系

X轴:水平方向(左-右)
Y轴:垂直方向(上-下)
Z轴:深度方向(近-远)

3D立方体示例

前面
后面
顶面
底面
左面
右面

这个立方体由6个面组成,分别定位在3D空间不同位置

平移(translate)

🚀 什么是平移?

平移就是将元素在3D空间中沿着X、Y或Z轴移动位置。想象它就像在桌子上滑动一个盒子。

🔧 常用函数:

translateX(50px) – 沿X轴(水平)移动
translateY(-30px) – 沿Y轴(垂直)移动
translateZ(100px) – 沿Z轴(深度)移动
translate3d(20px, 30px, 40px) – 同时沿三个方向移动

/* 将一个元素向右移动50px,向下移动30px,向前移动100px */ .box { transform: translate3d(50px, 30px, 100px); }

小白提示: translateZ正值会让元素向你靠近(变大),负值会让元素远离(变小)。

旋转(rotate)

🔄 什么是旋转?

旋转就是让元素围绕某个轴转动。想象旋转一个魔方或拧开瓶盖的动作。

🔧 常用函数:

rotateX(45deg) – 绕X轴旋转(像翻跟头)
rotateY(30deg) – 绕Y轴旋转(像旋转门)
rotateZ(15deg) – 绕Z轴旋转(像钟表指针)
rotate3d(1, 1, 0, 45deg) – 自定义轴旋转

/* 卡片翻转效果 */ .card { transform-style: preserve-3d; transition: transform 0.8s; } .card:hover { transform: rotateY(180deg); } .card-front, .card-back { backface-visibility: hidden; } .card-back { transform: rotateY(180deg); }

卡片翻转效果

银行卡正面

银行信息

有效期: 12/25

鼠标悬停查看效果

透视(perspective)

👓 什么是透视?

透视是创建3D视觉效果的关键。它模拟人眼观察物体的方式:近处的物体看起来大,远处的物体看起来小。

🔧 两种使用方式:

1. 在父元素上使用:perspective: 800px;
2. 在变换函数中:transform: perspective(800px) rotateX(45deg);

📏 透视值:

透视值越小(如200px),3D效果越夸张(类似广角镜头)
透视值越大(如2000px),3D效果越平缓(类似长焦镜头)

/* 设置父元素透视 */ .scene { perspective: 1000px; } /* 设置子元素变换 */ .cube { transform: rotateX(25deg) rotateY(25deg); transform-style: preserve-3d; }

重要: 透视必须设置在3D变换元素的父元素上才能生效。

3D容器 (transform-style)

📦 什么是3D容器?

当你想要一个元素内的子元素也参与3D变换时,需要使用transform-style: preserve-3d。这会让子元素保留在3D空间而不是被压平到2D平面。

❌ 默认值: transform-style: flat(子元素被压平)

✅ 3D模式: transform-style: preserve-3d(保留3D空间)

/* 创建一个3D场景 */ .scene { perspective: 1200px; /* 设置透视 */ } /* 容器设置为3D空间 */ .container-3d { transform-style: preserve-3d; transition: transform 1s; } /* 立方体每个面的定位 */ .cube-face { position: absolute; transform: …; /* 设置每个面的3D位置 */ }

应用场景: 立方体、3D旋转木马、卡片堆叠等包含多个3D子元素的场景。

背面可见性(backface-visibility)

👁️ 什么是背面?

在3D空间中,每个元素都有正面和背面。默认情况下,当元素旋转180度后,你会看到它的背面。

⚙️ 属性值:

backface-visibility: visible; – 显示背面(默认值)
backface-visibility: hidden; – 隐藏背面

💡 为什么需要隐藏背面?

在创建卡片翻转效果时,我们通常希望当卡片翻转到背面时,正面不可见(隐藏),反之亦然。

/* 卡片翻转时隐藏背面 */ .card-front, .card-back { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; /* 关键属性 */ } .card-back { transform: rotateY(180deg); }

背面可见性对比

左:背面可见(默认)

右:背面隐藏

这个属性通常用于成对的元素(如卡片的正反面),以实现平滑的翻转效果。

🎉 恭喜!你现在已经掌握了CSS3 3D转换的核心概念!

💻 实践是学习的关键 – 尝试创建自己的3D效果吧!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部