css3绘制魔方transform-style: preserve-3d,translateZ,rotateX的使用

css3绘制魔方

上代码,上菜
在这里插入图片描述

<body>
<div class="wrap">
    <div class="box box1">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="box box2">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="box box3">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="box box4">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="box box5">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="box box6">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
</div>
</body>
<style>
    .wrap{
        position: relative;
        transform-style: preserve-3d;
        transform-origin: center center;
        transform: rotateX(-30deg) rotateY(-80deg);
        width: 198px;
        height: 198px;
        margin: 200px auto;
    }
    .wrap:hover{
        animation: myfirst 8s;
    }
    @keyframes myfirst
    {
        0%   {transform: rotateX(-30deg) rotateY(-80deg);}
        25%  {transform: rotateX(360deg) rotateY(-120deg);}
        50%  {transform: rotateY(-30deg) rotateY(-60deg);}
        100% {transform: rotateY(-360deg) rotateY(-80deg);}
    }
    .box{
        position: absolute;
        left: 0;
        top: 0;
        width: 198px;
        height: 198px;
    }
    .box div{
        float: left;
        width: 60px;
        height: 60px;
        background-color: red;
        border: solid 1px #666;
        margin: 2px;
        box-shadow: 0 1px 2px rgba(0,0,0, 0.3);
        border-radius: 5px;
    }
    .box1{
        transform: rotateY(90deg) translateZ(99px);
    }
    .box1>div{
        background-color: red;
    }
    .box2{
        transform: rotateY(90deg) translateZ(-99px);
    }
    .box2>div{
        background-color: green;
    }
    .box3{
        transform: rotateX(90deg) translateZ(99px);
    }
    .box3>div{
        background-color: blue;
    }
    .box4{
        transform: rotateX(90deg) translateZ(-99px);
    }
    .box4>div{
        background-color: yellow;
    }
    .box5{
        transform: rotateX(0deg) translateZ(-99px);
    }
    .box5>div{
        background-color: palegreen;
    }
    .box6{
        transform: rotateX(0deg) translateZ(99px);
    }
    .box6>div{
        background-color: aqua;
    }
</style>

主要使用了css3的
transform-style: preserve-3d;的使用,通过把元素转换为3d属性的结构,对应的添加了Z轴的属性,生成6个div使其重叠在一起,然后使用transform: rotateX(0deg) translateZ(99px)等向Z轴平移或者XY轴平移,达到3d的效果,注:给定div需要有宽高

猜你喜欢

转载自blog.csdn.net/u013112461/article/details/90747683