加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 系统 > 正文

纯CSS3实现3D旋转书本效果

发布时间:2020-03-18 04:12:51 所属栏目:系统 来源:站长网
导读:副标题#e# 有一些前沿的电商网站已经开始使用3D模型来展示商品并支持在线定制,而其中图书的展示是最为简单的一种,无需复杂的建模过程,使用图片和CSS3的一些变换即可实现更好的展示效果,简洁而实用。 书本的3D模型是所有商品中最为简单的,因为其本质上
副标题[/!--empirenews.page--]

有一些前沿的电商网站已经开始使用3D模型来展示商品并支持在线定制,而其中图书的展示是最为简单的一种,无需复杂的建模过程,使用图片和CSS3的一些变换即可实现更好的展示效果,简洁而实用。
书本的3D模型是所有商品中最为简单的,因为其本质上就是一个立方体(cube),只是带有封面/封底和左侧封条。 所以要构造一个3D书本展示,问题就被分解为构造一个立方体+旋转+图片背景。
1. 构造一个立方体
要创建一个立方体,首先我们需要创建一个虚拟的三维视觉空间,这可以通过设置包容器元素的perspective属性获得。

纯CSS3实现3D旋转书本效果


CSS Code复制内容到剪贴板

.stage {    

width: 200px;    

height: 260px;    

perspective: 1000px;    

perspective-origin: center center;// 缺省值,可忽略    

}  

上述代码把元素放在距离观察点1000px的地方(Z轴向),并且在X/Y轴向上居中。

CSS Code复制内容到剪贴板

<div class="stage">    

<div class="cube">    

<figure class="back"></figure>    

<figure class="top"></figure>    

<figure class="bottom"></figure>    

<figure class="left"></figure>    

<figure class="right"></figure>    

<figure class="front"></figure>    

</div>    

</div>   

接着,我们在包容器元素里面添加一个立方体元素,6个边(上下左右和前后),之所以使用figure,是因为需要支持贴图。
我们需要根据书本的厚度和长宽来确定立方体各个面的坐标位置,在本例中所用书本模型(一本MySQL书)的绝对厚度为18.2px,高度260px,宽度197.6px。
那么根据简单的几何知识,前后面距离立方体中心的距离为18.2/2=9.1px,其中“后”元素需要再翻转一下(即“背”过去)。

CSS Code复制内容到剪贴板

.front {    

transform: translateZ(9.1px);    

}    

.back {    

transform: rotateY(180deg) translateZ(9.1px);    

}   

用类似的计算方法,我们可以把其他4条边放置(平移+旋转变换)到各自的位置,从而拼装成一个虚拟的立方体。

CSS Code复制内容到剪贴板

.front {    

transform: translateZ(9.1px);    

}    

.back {    

transform: rotateY(180deg) translateZ(9.1px);    

}    

.top {    

transform: rotateX(90deg) rotateZ(90deg) translateZ(98.8px) translateY(-89.7px);    

width: 18.2px;    

height: 197.6px;    

}    

.bottombottom {    

transform: rotateX(-90deg) rotateZ(90deg) translateZ(161.2px) translateY(-89.7px);    

}    

.left {    

transform: rotateY(-90deg) translateZ(9.1px);    

width: 18.2px;    

}    

.rightright {    

transform: rotateY(90deg) translateZ(188.5px);    

width: 18.2px;    

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读