CSS3动画之3D旋转书本效果

有一些前沿的电商网站已经开始使用3D模型来展示商品并支持在线定制,而其中图书的展示是最为简单的一种,无需复杂的建模过程,使用图片和CSS3的一些变换即可实现更好的展示效果,简洁而实用。 
书本的3D模型是所有商品中最为简单的,因为其本质上就是一个立方体(cube),只是带有封面/封底和左侧封条。 所以要构造一个3D书本展示,问题就被分解为构造一个立方体+旋转+图片背景。 

1. 构造一个立方体 

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

CSS3动画之3D旋转书本效果

  1. .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,其中“后”元素需要再翻转一下(即“背”过去)。 

  1. .front { transform: translateZ(9.1px); } .back { transform: rotateY(180deg) translateZ(9.1px); }

登录后复制

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

立即学习“前端免费学习笔记(深入)”;

  1. .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; }

登录后复制

 

2. 添加封面 

接着我们给前后以及左侧面元素添加背景图(可以使用一张图,然后从不同的位置截取),给其他3个面添加背景颜色,并给“底”面添加阴影效果:

  1. .front { transform: translateZ(9.1px); background: url("//wow.techbrood.com/uploads/160301/mysql.png") top rightright; 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; } .bottombottom { 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; } .rightright { transform: rotateY(90deg) translateZ(188.5px); background: #ddd; background-size: auto 100%; width: 18.2px; }

登录后复制

这样我们就实现了一个逼真的3D书本视觉模型。 

 

3. 添加旋转动画 

这个比较简单,使用rotateY方法就可以。 

  1. @-webkit-keyframes rotate { 0% { transform: rotateY(0) translateX(-18.2px); } 100% { transform: rotateY(360deg) translateX(-18.2px); } }

登录后复制

最终的效果图如下:

CSS3动画之3D旋转书本效果

以上是本文全部类容,如果需要了解更多CSS3动画请阅读css3 教程中的css3 动画章节

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    css 浏览器兼容性总结

    2025-3-29 14:36:52

    编程技术

    css 自动换行 word-break:break-all和word-wrap:break-word

    2025-3-29 14:37:01

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索