zoukankan      html  css  js  c++  java
  • transform动画的一个3D的正方体盒子

      1 
    <!DOCTYPE html>
      2 <html lang="en">
      3 
      4 <head>
      5     <meta charset="UTF-8">
      6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
      7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
      8     <title>Document</title>
      9     <style>
     10         /* 清除浏览器的内边距和外边距 */
     11 
     12         * {
     13             margin: 0;
     14             padding: 0;
     15         }
     16 /* 这是外面大盒子的样式 */
     17            #box {
     18             /* 给大盒子一个宽度和高度 */
     19              200px;
     20             height: 200px;
     21             /* 让他离顶部250像素居中对齐 */
     22             margin: 250px auto;
     23             /* 这里是给他子级的一个相对定位 */
     24             position: relative;
     25             /* 这里把原有的模型转换为3D状态 */
     26             transform-style: preserve-3d;
     27             /* 这里在给他一个透视的视角 */
     28             transform: perspective(800px);
     29             /* 这里是调用下面的@keyframes 参数  linear代表匀速,infinite代表一直循环*/
     30             animation: ro 6s linear infinite;
     31         }
     32 
     33         #box>div {
     34              200px;
     35             height: 200px;
     36             /* 这里是里离他的父级头部和左部为零一样 宽高 */
     37             position: absolute;
     38             top: 0;
     39             left: 0;
     40             /* 这里是动画的一个过渡效果执行0.5s完成 */
     41             transition: 0.5s;
     42         }
     43 
     44         #box>.top {
     45             /* 这里是插入背景图片 */
     46             background: url("田勇.jpg");
     47             /* 设置背景图片和盒子大小宽高一样 */
     48             background-size: 100% 100%;
     49             /* 这是设置他的动画向Y轴负一百像素 X轴旋转90度 */
     50             transform: translateY(-100px) rotateX(90deg)
     51         }
     52 
     53         #box>.bottom {
     54             background: url("田勇.jpg");
     55             background-size: 100% 100%;
     56             transform: translateY(100px) rotateX(90deg)
     57         }
     58 
     59         #box>.left {
     60             background: url("田勇.jpg");
     61             background-size: 100% 100%;
     62             transform: translateX(-100px) rotateY(90deg)
     63         }
     64 
     65         #box>.right {
     66             background: url("田勇.jpg");
     67             background-size: 100% 100%;
     68             transform: translateX(100px) rotateY(90deg)
     69         }
     70 
     71         #box>.prev {
     72             background: url("田勇.jpg");
     73             background-size: 100% 100%;
     74             transform: translateZ(-100px)
     75         }
     76 
     77         #box>.back {
     78             background: url("田勇.jpg");
     79             background-size: 100% 100%;
     80             transform: translateZ(100px)
     81         }
     82 
     83 /* 这是里面内的盒子的样式 方法跟外面盒子一样 */
     84         .box1 {
     85              100px;
     86             height: 100px;
     87             position: absolute;
     88             left: 50px;
     89             top: 50px;
     90             position: relative;
     91             transform-style: preserve-3d;
     92         }
     93 
     94         #box>.box1>div {
     95              100px;
     96             height: 100px;
     97             position: absolute;
     98             top: 0;
     99             left: 0;
    100             transition: 0.5s;
    101             opacity: 1;
    102         }
    103 
    104         #box>.box1>.top1 {
    105             background: url("田勇.jpg");
    106             background-size: 100% 100%;
    107             transform: translateY(-50px) rotateX(90deg)
    108         }
    109 
    110         #box>.box1>.bottom1 {
    111             background: url("田勇.jpg");
    112             background-size: 100% 100%;
    113             transform: translateY(50px) rotateX(90deg)
    114         }
    115 
    116         #box>.box1>.left1 {
    117             background: url("田勇.jpg");
    118             background-size: 100% 100%;
    119             transform: translateX(-50px) rotateY(90deg)
    120         }
    121 
    122         #box>.box1>.right1 {
    123             background: url("田勇.jpg");
    124             background-size: 100% 100%;
    125             transform: translateX(50px) rotateY(90deg)
    126         }
    127 
    128         #box>.box1>.prev1 {
    129             background: url("田勇.jpg");
    130             background-size: 100% 100%;
    131             transform: translateZ(-50px)
    132         }
    133 
    134         #box>.box1>.back1 {
    135             background: url("田勇.jpg");
    136             background-size: 100% 100%;
    137             transform: translateZ(50px)
    138         }
    139 /* 这里是定义他的一个动画的进度效果 */
    140         @keyframes ro {
    141             0% {
    142                 transform: rotate(0) rotateX(45deg) rotateY(-180deg);
    143             }
    144             100% {
    145                 transform: rotate(360deg) rotateX(45deg) rotateY(180deg);
    146             }
    147         }
    148 /* 这里的hover是当鼠标移入在大盒子 上面就会发生的动画 translateY是改变移动的方向有X轴和Y轴和Z轴 */
    149         #box:hover>.top {
    150             transform: translateY(-150px) rotateX(90deg)
    151         }
    152 
    153         #box:hover>.bottom {
    154             transform: translateY(150px) rotateX(90deg)
    155         }
    156 
    157         #box:hover>.left {
    158             transform: translateX(-150px) rotateY(90deg)
    159         }
    160 
    161         #box:hover>.right {
    162             transform: translateX(150px) rotateY(90deg)
    163         }
    164 
    165         #box:hover>.prev {
    166             transform: translateZ(-150px)
    167         }
    168 
    169         #box:hover>.back {
    170             transform: translateZ(150px)
    171         }
    172     </style>
    173 </head>
    174 
    175 <body>
    176     <!-- 这是外面的盒子 -->
    177     <div id="box">
    178         <!-- 这是里面的盒子 -->
    179         <ul class="box1">
    180             <div class="top1"></div>
    181             <div class="bottom1"></div>
    182             <div class="left1"></div>
    183             <div class="right1"></div>
    184             <div class="prev1"></div>
    185             <div class="back1"></div>
    186         </ul>
    187         <div class="top"></div>
    188         <div class="bottom"></div>
    189         <div class="left"></div>
    190         <div class="right"></div>
    191         <div class="prev"></div>
    192         <div class="back"></div>
    193     </div>
    194 </body>
    195 
    196 </html>
  • 相关阅读:
    闲谈:价值、服务、时间、用户体验、美、过度开发
    笔记:Sublime Text 3
    快速切换目录命令go
    miniPy for CentOS 5/6
    用Fabric实现小批量的自动化上线
    异步多线程C/S框架gko_pool
    Reboot分享第三期(已结束)
    Reboot分享第二期(已结束)
    Reboot分享第一期(已结束)
    iptables从入门到精通
  • 原文地址:https://www.cnblogs.com/tian-520/p/tianyong3.html
Copyright © 2011-2022 走看看