css3 立体旋转-CSS3实现3D水晶六面体疗效

点击右上角白色按钮,关注“网络秀”,让你真正秀起来

前言

前段时间写了一篇文章《CSS3实现漂亮的图片倒影效果》。 上面的最后一步是“我们将反射倾斜一定角度,使整个反射效果更加立体”。 可以制作六面体吗? ? ?

明天我们将使用纯CSS制作一个六面体。 主要用到的知识是transform:rotate。 如果不明白,可以点击下面的文章来了解:《CSS3中的过渡和变换很愚蠢且不清楚》

疗效预览:

CSS3实现3D水晶六面体疗效

立体旋转相册制作免费_css3 立体旋转_立体旋转相册

分析

六面体是由6个面组成的,所以我们主要操作6个面,将它们组合成一个六面体。

观察者的方向为z轴正方向

观察者的方向为z轴正方向

rotateX3D空间旋转指定角度,并沿垂直于X轴的方向顺时针旋转。 rotateY3D空间旋转指定角度,并沿垂直于Y轴的方向顺时针旋转。 rotateZ3D空间旋转指定角度css3 立体旋转,并沿垂直于Z轴的方向顺时针旋转。

第一步——画出正面和背面2个面

CSS3实现3D水晶六面体疗效

对于下面的样式,我们将整个包沿着垂直于X轴的方向逆时针旋转30°,并将Y轴逆时针旋转80°。 上部元素的Z轴位移100pxcss3 立体旋转,前面元素的Z轴位移-100px,Y轴顺时针旋转。 旋转 180°。 使疗效看起来更清晰,有立体错位感。

/*最外层容器样式*/ 
.wrap{ 
 width: 200px; 
 height: 200px; 
 margin: 150px auto; 
 position: relative; 
 
} 
/*包裹所有容器样式*/ 
.cube{ 
 width: 200px; 
 height: 200px; 
 margin: 0 auto; 
 /*preserve-3d 使其子元素具有3D效果*/ 
 transform-style: preserve-3d; 
 transform: rotateX(-30deg) rotateY(-80deg); 
} 
 
.cube div{ 
 position: absolute; 
 width: 200px; 
 height: 200px; 
 opacity: 0.8; 
} 
.cube .before{ 
 transform: rotateY(0deg) translateZ(100px); 
 background: red; 
} 
.cube .after{ 
 transform: translateZ(-100px) rotateY(180deg); 
 background: blue; 
}

第2步 - 画出左脸和右脸

和第一步类似,两个面也旋转位移,这样就可以完美拼接了

CSS3实现3D水晶六面体疗效

添加样式

.cube .left{ 
 transform: rotateY(90deg) translateZ(100px); 
 background: green; 
} 
.cube .right{ 
 transform: rotateY(-90deg) translateZ(100px); 
 background: yellow; 
}

第 3 步 - 画上表面和下表面

以此类推,完成上下表面。

立体旋转相册_立体旋转相册制作免费_css3 立体旋转

CSS3实现3D水晶六面体疗效

添加样式

.cube .top{ 
 transform: rotateX(90deg) translateZ(100px); 
 background: purple; 
} 
.cube .bottom{ 
 transform: rotateX(-90deg) translateZ(100px); 
 background: pink; 
}

第 4 步 - 美化

我们为每个面添加背景图像,然后旋转整个包,以便我们可以看到每个面的内容。

css3 立体旋转_立体旋转相册制作免费_立体旋转相册

添加样式

.pic{ 
 width: 200px; 
 height: 200px; 
} 
@-webkit-keyframes rotate{ 
 from{ 
 transform: rotateX(0deg) rotateY(0deg); 
 } 
 to{ 
 transform: rotateX(360deg) rotateY(360deg); 
 } 
} 
.cube{ 
 width: 200px; 
 height: 200px; 
 margin: 0 auto; 
 transform-style: preserve-3d; 
 transform: rotateX(-30deg) rotateY(-80deg); 
 -webkit-animation: rotate 20s infinite; 
 animation-timing-function: linear; 
}

最终疗效图:

CSS3实现3D水晶六面体疗效

公告