博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用纯CSS3实现一个3D旋转的书本
阅读量:5798 次
发布时间:2019-06-18

本文共 2723 字,大约阅读时间需要 9 分钟。

有一些前沿的电商站点已经開始使用3D模型来展示商品并支持在线定制,而当中图书的展示是最为简单的一种,

无需复杂的建模过程,使用图片和CSS3的一些变换就可以实现更好的展示效果,简洁而有用。

书本的3D模型是全部商品中最为简单的。由于其本质上就是一个立方体(cube)。仅仅是带有封面/封底和左側封条。

所以要构造一个3D书本展示,问题就被分解为构造一个立方体+旋转+图片背景。

1. 构造一个立方体

要创建一个立方体。首先我们须要创建一个虚拟的三维视觉空间。这能够通过设置包容器元素的perspective属性获得。

.stage {    width: 200px;    height: 260px;    perspective: 1000px;    perspective-origin: center center;// 缺省值,可忽略}
上述代码把元素放在距离观察点1000px的地方(Z轴向),而且在X/Y轴向上居中。

接着。我们在包容器元素里面加入一个立方体元素,6个边(上下左右和前后),之所以使用figure。是由于须要支持贴图。

我们须要依据书本的厚度和长宽来确定立方体各个面的坐标位置。在本例中所用书本模型(一本MySQL书)的绝对厚度为18.2px。高度260px。宽度197.6px。

那么依据简单的几何知识,前后面距离立方体中心的距离为18.2/2=9.1px,当中“后”元素须要再翻转一下(即“背”过去)。

.front {    transform: translateZ(9.1px);}.back {    transform: rotateY(180deg) translateZ(9.1px);}
用相似的计算方法。我们能够把其它4条边放置(平移+旋转变换)到各自的位置。从而拼装成一个虚拟的立方体。

.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;}.bottom {    transform: rotateX(-90deg) rotateZ(90deg) translateZ(161.2px) translateY(-89.7px);}.left {    transform: rotateY(-90deg) translateZ(9.1px);    width: 18.2px;}.right {    transform: rotateY(90deg) translateZ(188.5px);    width: 18.2px;}
2. 加入封面
接着我们给前后以及左側面元素加入背景图(能够使用一张图,然后从不同的位置截取),给其它3个面加入背景颜色。并给“底”面加入阴影效果:

.front {    transform: translateZ(9.1px);    background: url("//wow.techbrood.com/uploads/160301/mysql.png") top right;    background-size: auto 100%;}.back {    transform: rotateY(180deg) translateZ(9.1px);    background: url("//wow.techbrood.com/uploads/160301/mysql.png") top left;    background-size: auto 100%;}.top {    transform: rotateX(90deg) rotateZ(90deg) translateZ(98.8px) translateY(-89.7px);    background: #fafafa;    width: 18.2px;    height: 197.6px;}.bottom {    transform: rotateX(-90deg) rotateZ(90deg) translateZ(161.2px) translateY(-89.7px);    background: #ccc;    width: 18.2px;    height: 197.6px;    -webkit-filter: drop-shadow(0 0 26px rgba(0, 0, 0, 0.75));}.left {    transform: rotateY(-90deg) translateZ(9.1px);    background: url("//wow.techbrood.com/uploads/160301/mysql.png") top center;    background-size: auto 100%;    width: 18.2px;}.right {    transform: rotateY(90deg) translateZ(188.5px);    background: #ddd;    background-size: auto 100%;    width: 18.2px;}
这样我们就实现了一个逼真的3D书本视觉模型。

3. 加入旋转动画

这个比較简单,使用rotateY方法就能够。

@-webkit-keyframes rotate {    0% {        transform: rotateY(0) translateX(-18.2px);    }    100% {        transform: rotateY(360deg) translateX(-18.2px);    }}
终于的效果图例如以下:

你能够在踏得网上 (http://wow.techbrood.com/fiddle/17587)。

转载地址:http://vmifx.baihongyu.com/

你可能感兴趣的文章
ios xmpp demo
查看>>
设计模式之-工厂模式、构造函数模式
查看>>
python matplotlib 中文显示参数设置
查看>>
数据库事务隔离级别
查看>>
os模块大全详情
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
从内积的观点来看线性方程组
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
限制CheckBoxList控件只能单选
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>
项目笔记:测试类的编写
查看>>
如何迅速分析出系统CPU的瓶颈在哪里?
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>
PyTips 0x02 - Python 中的函数式编程
查看>>
阿里云安全肖力:安全基础建设是企业数字化转型的基石 ...
查看>>
使用《Deep Image Prior》来做图像复原
查看>>