纯CSS实现立方体旋转

下面为通过CSS动画实现的立方体旋转,可以改变CSS代码中关键帧定义(@keyframes)来改变立方体的旋转方式

HTML部分:

<body class="body">
  <div class="rect-wrap">   <!-- //舞台元素,设置perspective,让其子元素获得透视效果。 -->
    <div class="container">    <!-- //容器,设置transform-style: preserve-3d,让其子元素在3D空间呈现 -->
        <div class="top slide">1</div>   <!-- //立方体的六个面 -->
        <div class="bottom slide">2</div>
        <div class="left slide">3</div>
        <div class="right slide">4</div>
        <div class="front slide">5</div>
        <div class="back slide">6</div>
    </div>
  </div>
</body>

CSS部分:

<style>
      .rect-wrap {
        position: relative;
        perspective: 2000px;
      }
      .container {
        width: 400px;
        height: 400px;
        transform-style: preserve-3d;
        transform-origin: 50% 50% 100px;  /* //设置3d空间的原点在平面中心再向Z轴移动200px的位置 */
        /* left: 50%;
        margin-left: -200px; */
        top: 100px;
      }
      .slide {
        width: 200px;
        height: 200px;
        position: absolute;
        background: #000;
        line-height: 200px;
        text-align: center;
        color: #fff;
        font-size: 30px;
        font-weight: bold;
      }
      .top {
        left: 100px;
        top: -100px;
        transform: rotateX(-90deg);
        transform-origin: bottom;
        background: red;
      }
      .bottom {
        left: 100px;
        bottom: -100px;
        transform: rotateX(90deg);
        transform-origin: top;
        background: grey;
      }
      .left {
        left: -100px;
        bottom: 100px;
        transform: rotateY(90deg);
        transform-origin: right;
        background: green;
      }
      .right {
        left: 300px;
        bottom: 100px;
        transform: rotateY(-90deg);
        transform-origin: left;
        background: yellow;
      }
      .front {
        left: 100px;
        top: 100px;
        transform: translateZ(200px);
        background: black;
      }
      .back {
        left: 100px;
        top: 100px;
        transform: translateZ(0);;
        background: blue;
      }
      @keyframes rotate-frame {
        0% {
            transform: rotateX(0deg) rotateY(0deg);
        }
        10% {
            transform: rotateX(0deg) rotateY(180deg);
        }
        20% {
            transform: rotateX(-180deg) rotateY(180deg);
        }
        30% {
            transform: rotateX(-360deg) rotateY(180deg);
        }
        40% {
            transform: rotateX(-360deg) rotateY(360deg);
        }
        50% {
            transform: rotateX(-180deg) rotateY(360deg);
        }
        60% {
            transform: rotateX(90deg) rotateY(180deg);
        }
        70% {
            transform: rotateX(0) rotateY(180deg);
        }
        80% {
            transform: rotateX(90deg) rotateY(90deg);
        }
        90% {
            transform: rotateX(90deg) rotateY(0);
        }
        100% {
            transform: rotateX(0) rotateY(0);
        }
      }
      .container{
        animation: rotate-frame 30s linear infinite;
      }
    </style>

以上代码实现的效果如下:

 

转载于:https://www.cnblogs.com/web12/p/10023202.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值