您现在的位置是:网站首页> 编程资料编程资料

纯CSS3实现3D旋转书本效果_css3_CSS_网页制作_

2021-09-13 968人已围观

简介 有一些前沿的电商网站已经开始使用3D模型来展示商品并支持在线定制,而其中图书的展示是最为简单的一种,无需复杂的建模过程,使用图片和CSS3的一些变换即可实现更好的展示效果,简洁而实用,接下来通过本文给大家介绍CSS3实现3D旋转书本效果,需要的朋友一起学习

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


CSS Code复制内容到剪贴板
  1. .stage {    
  2. width200px;    
  3. height260px;    
  4. perspective: 1000px;    
  5. perspective-origin: center center;// 缺省值,可忽略    
  6. }  
上述代码把元素放在距离观察点1000px的地方(Z轴向),并且在X/Y轴向上居中。
CSS Code复制内容到剪贴板
  1. "stage">    
  2. "cube">    
  3. "back">    
  4. "top">    
  5. "bottom">    
  6. "left">    
  7. "right">    
  8. "front">    
    
  •    
    接着,我们在包容器元素里面添加一个立方体元素,6个边(上下左右和前后),之所以使用figure,是因为需要支持贴图。
    我们需要根据书本的厚度和长宽来确定立方体各个面的坐标位置,在本例中所用书本模型(一本MySQL书)的绝对厚度为18.2px,高度260px,宽度197.6px。
    那么根据简单的几何知识,前后面距离立方体中心的距离为18.2/2=9.1px,其中“后”元素需要再翻转一下(即“背”过去)。
    CSS Code复制内容到剪贴板
    1. .front {    
    2. transform: translateZ(9.1px);    
    3. }    
    4. .back {    
    5. transform: rotateY(180deg) translateZ(9.1px);    
    6. }   
    用类似的计算方法,我们可以把其他4条边放置(平移+旋转变换)到各自的位置,从而拼装成一个虚拟的立方体。
    CSS Code复制内容到剪贴板
    1. .front {    
    2. transform: translateZ(9.1px);    
    3. }    
    4. .back {    
    5. transform: rotateY(180deg) translateZ(9.1px);    
    6. }    
    7. .top {    
    8. transform: rotateX(90deg) rotateZ(90deg) translateZ(98.8px) translateY(-89.7px);    
    9. width: 18.2px;    
    10. height: 197.6px;    
    11. }    
    12. .bottombottom {    
    13. transform: rotateX(-90deg) rotateZ(90deg) translateZ(161.2px) translateY(-89.7px);    
    14. }    
    15. .left {    
    16. transform: rotateY(-90deg) translateZ(9.1px);    
    17. width: 18.2px;    
    18. }    
    19. .rightright {    
    20. transform: rotateY(90deg) translateZ(188.5px);    
    21. width: 18.2px;    
    22. }  
    2. 添加封面
    接着我们给前后以及左侧面元素添加背景图(可以使用一张图,然后从不同的位置截取),给其他3个面添加背景颜色,并给“底”面添加阴影效果:
    CSS Code复制内容到剪贴板
    1. .front {    
    2. transform: translateZ(9.1px);    
    3. backgroundurl("//wow.techbrood.com/uploads/160301/mysql.png"top rightright;    
    4. background-sizeauto 100%;    
    5. }    
    6. .back {    
    7. transform: rotateY(180deg) translateZ(9.1px);    
    8. backgroundurl("//wow.techbrood.com/uploads/160301/mysql.png"top left;    
    9. background-sizeauto 100%;    
    10. }    
    11. .top {    
    12. transform: rotateX(90deg) rotateZ(90deg) translateZ(98.8px) translateY(-89.7px);    
    13. background#fafafa;    
    14. width: 18.2px;    
    15. height: 197.6px;    
    16. }    
    17. .bottombottom {    
    18. transform: rotateX(-90deg) rotateZ(90deg) translateZ(161.2px) translateY(-89.7px);    
    19. background#ccc;    
    20. width: 18.2px;    
    21. height: 197.6px;    
    22. -webkit-filter: drop-shadow(0 0 26px rgba(0, 0, 0, 0.75));    
    23. }    
    24. .left {    
    25. transform: rotateY(-90deg) translateZ(9.1px);    
    26. backgroundurl("//wow.techbrood.com/uploads/160301/mysql.png"top center;    
    27. background-sizeauto 100%;    
    28. width: 18.2px;    
    29. }    
    30. .rightright {    
    31. transform: rotateY(90deg) translateZ(188.5px);    
    32. background#ddd;    
    33. background-sizeauto 100%;    
    34. width: 18.2px;    
    35. }  
    这样我们就实现了一个逼真的3D书本视觉模型。
    3. 添加旋转动画
    这个比较简单,使用rotateY方法就可以。
    CSS Code复制内容到剪贴板
    1. @-webkit-keyframes rotate {    
    2. 0% {    
    3. transform: rotateY(0) translateX(-18.2px);    
    4. }    
    5. 100% {    
    6. transform: rotateY(360deg) translateX(-18.2px);    
    7. }    
    8. }  

    最终的效果图如下:

    关于CSS3实现3D旋转书本 的全部内容小编就给大家介绍这么多,希望对大家有所帮助!
    原文:http://blog.csdn.net/iefreer/article/details/50931478

    相关内容

    -六神源码网