zoukankan      html  css  js  c++  java
  • 纯CSS做3D旋转魔方

    昨天偶然看见网友(简单说 用CSS做一个魔方旋转的效果)做的一个3D旋转魔方  效果就是本博客右侧公告栏所示

    在这里把做法展现出来

    感兴趣的可以试试  做成自己特有的魔方

      1 <!DOCTYPE html>
      2 <html>
      3  
      4 <head>
      5     <meta charset="utf-8" />
      6     <style>
      7         /*最外层容器样式*/
      8         .wrap {
      9             width: 200px;
     10             height: 200px;
     11             margin: 200px;
     12             position: relative;
     13         }
     14  
     15         /*包裹所有容器样式*/
     16         .cube {
     17             width: 200px;
     18             height: 200px;
     19             margin: 0 auto;
     20             transform-style: preserve-3d;
     21             transform: rotateX(-30deg) rotateY(-80deg);
     22             animation: rotate linear 20s infinite;
     23         }
     24  
     25         @-webkit-keyframes rotate {
     26             from {
     27                 transform: rotateX(0deg) rotateY(0deg);
     28             }
     29             to {
     30                 transform: rotateX(360deg) rotateY(360deg);
     31             }
     32         }
     33  
     34         .cube div {
     35             position: absolute;
     36             width: 200px;
     37             height: 200px;
     38             opacity: 0.8;
     39             transition: all .4s;
     40         }
     41  
     42         /*定义所有图片样式*/
     43         .pic {
     44             width: 200px;
     45             height: 200px;
     46         }
     47  
     48         .cube .out_front {
     49             transform: rotateY(0deg) translateZ(100px);
     50         }
     51  
     52         .cube .out_back {
     53             transform: translateZ(-100px) rotateY(180deg);
     54         }
     55  
     56         .cube .out_left {
     57             transform: rotateY(-90deg) translateZ(100px);
     58         }
     59  
     60         .cube .out_right {
     61             transform: rotateY(90deg) translateZ(100px);
     62         }
     63  
     64         .cube .out_top {
     65             transform: rotateX(90deg) translateZ(100px);
     66         }
     67  
     68         .cube .out_bottom {
     69             transform: rotateX(-90deg) translateZ(100px);
     70         }
     71  
     72         /*定义小正方体样式*/
     73         .cube span {
     74             display: block;
     75             width: 100px;
     76             height: 100px;
     77             position: absolute;
     78             top: 50px;
     79             left: 50px;
     80         }
     81  
     82         .cube .in_pic {
     83             width: 100px;
     84             height: 100px;
     85         }
     86  
     87         .cube .in_front {
     88             transform: rotateY(0deg) translateZ(50px);
     89         }
     90  
     91         .cube .in_back {
     92             transform: translateZ(-50px) rotateY(180deg);
     93         }
     94  
     95         .cube .in_left {
     96             transform: rotateY(-90deg) translateZ(50px);
     97         }
     98  
     99         .cube .in_right {
    100             transform: rotateY(90deg) translateZ(50px);
    101         }
    102  
    103         .cube .in_top {
    104             transform: rotateX(90deg) translateZ(50px);
    105         }
    106  
    107         .cube .in_bottom {
    108             transform: rotateX(-90deg) translateZ(50px);
    109         }
    110  
    111         /*鼠标移入后样式*/
    112         .cube:hover .out_front {
    113             transform: rotateY(0deg) translateZ(200px);
    114         }
    115  
    116         .cube:hover .out_back {
    117             transform: translateZ(-200px) rotateY(180deg);
    118         }
    119  
    120         .cube:hover .out_left {
    121             transform: rotateY(-90deg) translateZ(200px);
    122         }
    123  
    124         .cube:hover .out_right {
    125             transform: rotateY(90deg) translateZ(200px);
    126         }
    127  
    128         .cube:hover .out_top {
    129             transform: rotateX(90deg) translateZ(200px);
    130         }
    131  
    132         .cube:hover .out_bottom {
    133             transform: rotateX(-90deg) translateZ(200px);
    134         }
    135     </style>
    136 </head>
    137  
    138 <body>
    139     <!-- 外层最大容器 -->
    140     <div class="wrap">
    141         <!--包裹所有元素的容器-->
    142         <div class="cube">
    143             <!--前面图片 -->
    144             <div class="out_front">
    145                 <img src="http://img.blog.csdn.net/20170716094246620" class="pic" />
    146             </div>
    147             <!--后面图片 -->
    148             <div class="out_back">
    149                 <img src="http://img.blog.csdn.net/20170716094334594" class="pic" />
    150             </div>
    151             <!--左面图片 -->
    152             <div class="out_left">
    153                 <img src="http://img.blog.csdn.net/20170716094400013" class="pic" />
    154             </div>
    155             <!--右面图片 -->
    156             <div class="out_right">
    157                 <img src="http://img.blog.csdn.net/20170716094422331" class="pic" />
    158             </div>
    159             <!--上面图片 -->
    160             <div class="out_top">
    161                 <img src="http://img.blog.csdn.net/20170716094444434" class="pic" />
    162             </div>
    163             <!--下面图片 -->
    164             <div class="out_bottom">
    165                 <img src="http://img.blog.csdn.net/20170716094504432" class="pic" />
    166             </div>
    167  
    168             <!--小正方体 -->
    169             <span class="in_front">
    170                 <img src="http://img.blog.csdn.net/20170716120759718" class="in_pic" />
    171             </span>
    172             <span class="in_back">
    173                  <img src="http://img.blog.csdn.net/20170716120759718" class="in_pic" />
    174             </span>
    175             <span class="in_left">
    176                 <img src="http://img.blog.csdn.net/20170716120759718" class="in_pic" />
    177             </span>
    178             <span class="in_right">
    179                 <img src="http://img.blog.csdn.net/20170716120759718" class="in_pic" />
    180             </span>
    181             <span class="in_top">
    182                 <img src="http://img.blog.csdn.net/20170716120759718" class="in_pic" />
    183             </span>
    184             <span class="in_bottom">
    185                 <img src="http://img.blog.csdn.net/20170716120759718" class="in_pic" />
    186             </span>
    187         </div>
    188  
    189     </div>
    190 </body>
    191  
    192 </html>

    下面是效果图

    其中难点:

    transform-style: preserve-3d; 
    使被转换的子元素保留其 3D 转换: 
    参考链接 http://www.runoob.com/cssref/css3-pr-transform-style.html

    css动画 http://www.runoob.com/css3/css3-animations.html

    摘自:http://m.blog.csdn.net/FE_dev/article/details/75142505

    2017-11-30    08:26:45

  • 相关阅读:
    彩票股票金融与运气之研究(四)易道
    寻物一例
    彩票股票金融与运气之研究(三) 抽象模型
    彩票股票金融与运气之研究(一)前奏
    占何时可招到人
    占这单项目可成否
    C#控制DataMax打印机问题总结
    微软宣布Silverlight 5
    Windows Phone 7应用之sina微博——UI设计
    传言:Windows Phone 7“芒果”更新将增加 HTML5 支持
  • 原文地址:https://www.cnblogs.com/angelye/p/7927307.html
Copyright © 2011-2022 走看看