今天玩了下 css 3D 旋转,顺便写了一个小 Demo
只写了一个 hover 向上翻转的,其他效果基本类似,就没多写,了解原理即可,可自行扩展。
- 先简单贴个效果图
 

- 直接上代码
 
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>3D盒子旋转Demo</title>
  <style>
    .rotate-box {
      height: 137px;
      width: 286px;
      overflow: hidden; /* 隐藏翻转上去和翻转下去的图片 */
    }
    .rotate-inner {
      transition: all .4s ease;
      perspective: 428px; /* 重点属性,定义 3D 元素距视图的距离,有他才有3D效果 */
      -webkit-perspective: 428px;
    }
    .rotate-inner .top-block,
    .rotate-inner .bottom-block {
      backface-visibility: hidden; /* 辅助属性-属性定义当元素不面向屏幕时是否可见,如果在旋转元素不希望看到其背面时,该属性很有用 */
      transition: all .4s ease;
      -webkit-backface-visibility: hidden;
      -webkit-transition: all .4s ease;
      width: 286px;
      height: 137px;
    }
    .rotate-inner .top-block {
      transform-origin: bottom; /* 旋转轴线位置 */
      -webkit-transform-origin: bottom;
      transform: rotateX(0deg); /* 默认旋转角度 */
      -webkit-transform: rotateX(0deg);
      background-color: blue;
    }
    .rotate-inner .bottom-block {
      transform-origin: top; /* 旋转轴线位置 */
      -webkit-transform-origin: top;
      transform: rotateX(-90deg);
      -webkit-transform: rotateX(-90deg);
      background-color: #777;
    }
    .rotate-box:hover .rotate-inner {
      margin-top: -137px; /* 旋转后上移,把下面的block显示,上面的隐藏 */
    }
    .rotate-box:hover .rotate-inner .top-block {
      transform: rotateX(90deg); /* 旋转后角度 */
      -webkit-transform: rotateX(90deg);
    }
    .rotate-box:hover .rotate-inner .bottom-block {
      transform: rotateX(0);
      -webkit-transform: rotateX(0);
    }
  </style>
</head>
<body>
  <div class="rotate-box">
    <div class="rotate-inner">
      <div class="top-block"></div>
      <div class="bottom-block"></div>
    </div>
  </div>
</body>
</html>- 其实就是两个块上下堆放,外层设置超出隐藏,然后把上面的块沿X轴底部旋转,下面的沿X轴顶部旋转,最后相当于下面的呈现出来了,上面的又隐藏掉了
 - 重点是perspective属性,定义 3D 元素距视图的距离,有他才有3D效果
 










