纯CSS3超酷3D旋转立方体动画特效

这是一款效果非常炫酷的纯CSS3 3D旋转立方体动画特效。该3D立方体使用CSS3 perspective制作,可以在水平方向、垂直方向和平面视角方向旋转,效果相当震撼。


201501251647.jpg




查看演示


 纯CSS3超酷3D旋转立方体动画特效.zip (28.78 KB, 下载次数: 67)




HTML结构
立方体结构中,使用一个wrapper div来包裹立方体。在里面使用6个div来制作立方体的6个面。


  1. <div class="wrap">
  2.     <div class="cube">
  3.         <div class="front">front</div>
  4.         <div class="back">back</div>
  5.         <div class="top">top</div>
  6.         <div class="bottom">bottom</div>
  7.         <div class="left">left</div>
  8.         <div class="right">right</div>
  9.     </div>
  10. </div>
复制代码


立方体的每一个面都有它自己的元素。我们稍后会使用CSS来将立方体的6个面放置到正确的位置上。


CSS样式


在立方体的CSS样式中,首先要关注的是立方体的wrapper div。为了制作3D效果,我们需要为它提供一个 CSS perspective 属性。



  1. .wrap {
  2.     perspective: 800px;
  3.     perspective-origin: 50% 100px;
  4. }
复制代码


CSS perspective属性是一个比较复杂的CSS3属性。最好的理解它的方法是看完文档后,自己动手修改一下DEMO中的perspective属性来看看它的变化。下面需要给包含立方体6个面的立方体的容器.cube提供样式:


  1. .cube {
  2.     position: relative;
  3.     width: 200px;
  4.     transform-style: preserve-3d;
  5. }
复制代码


给立方体容器200像素的宽度,并设置为相对定位,这样在它里面的立方体的6个面可以设置为绝对定位。preserve-3d属性确保所有6个面都处于3D立体状态。在为6个面设置它们的位置之前,先给它们一些通用的样式:


  1. .cube div {
  2.     position: absolute;
  3.     width: 200px;
  4.     height: 200px;
  5. }
复制代码


在进过上面对立方体6个面的一系列设置之后,现在我们可以为6个面制作变形效果,以使它们组装为一个立方体。


  1. .back {
  2.     transform: translateZ(-100px) rotateY(180deg);
  3. }
  4. .right {
  5.     transform: rotateY(-270deg) translateX(100px);
  6.     transform-origin: top right;
  7. }
  8. .left {
  9.     transform: rotateY(270deg) translateX(-100px);
  10.     transform-origin: center left;
  11. }
  12. .top {
  13.     transform: rotateX(-90deg) translateY(-100px);
  14.     transform-origin: top center;
  15. }
  16. .bottom {
  17.     transform: rotateX(90deg) translateY(100px);
  18.     transform-origin: bottom center;
  19. }
  20. .front {
  21.     transform: translateZ(100px);
  22. }
复制代码


rotateY的值可以旋转立方体的各个面,使上面的文字处于正确的位置上。而 translateZ 的值使元素在指定容器中向前或向后移动。translateY的值看起来有些混乱,但是请记住,它的作用是通过透明的面板来使指定的面升高或降低来制作3D效果。每一个面都有自己的translations值来使它们处于适当的位置上。你可以自己修改一下这些值来看看效果。


水平旋转的立方体


该效果是DEMO1中的第一种效果。我们使用关键帧技术来使立方体在水平方向上旋转:



  1. @keyframes spin {
  2.     from { transform: rotateY(0); }
  3.     to { transform: rotateY(360deg); }
  4. }

  5. .cube {
  6.     animation: spin 5s infinite linear;
  7. }
复制代码




是不是比想象中的要简单得多?6个面上的文字在立方体旋转时都处于正确的位置上。使用关键帧可以制作出许多神奇的动画效果。


垂直旋转的立方体


该效果是DEMO1中的第二种效果。要在垂直方向上旋转立方体只需要简单的改变动画的旋转轴为Y轴。但是这种情况下面板上的文字有时候会显示在相反的方向上,所以我们需要修改一下元素旋转的代码:



  1. @keyframes spin-vertical {
  2.     from { transform: rotateX(0); }
  3.     to { transform: rotateX(-360deg); }
  4. }

  5. .cube-wrap.vertical .cube {
  6.     margin: 0 auto; /* keeps the cube centered */

  7.     transform-origin: 0 100px;
  8.     animation: spin-vertical 5s infinite linear;
  9. }

  10. .cube-wrap.vertical .top {
  11.     transform: rotateX(-270deg) translateY(-100px);
  12. }

  13. .cube-wrap.vertical .back {
  14.     transform: translateZ(-100px) rotateX(180deg);
  15. }

  16. .cube-wrap.vertical .bottom {
  17.     transform: rotateX(-90deg) translateY(100px);
  18. }
复制代码


扁平旋转的立方体


该效果是DEMO1中的第三种效果。该效果中移除了立方体的3D效果,每次只显示一个面。要做到只一点,我们可以从wrapper中移除perspective和原点的设置:



  1. .wrap {
  2.     /* no more perspective */
  3.     perspective: none;
  4.     perspective-origin: 0 0;
  5. }
复制代码


现在立方体每次只会显示一个面。
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值