欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

css3D立方体旋转动画

程序员文章站 2022-07-12 23:33:34
...

效果图

css3D立方体旋转动画

html立方体结构

整个立方体的结构分为六个正方形面,所以需定义六个div结构来表示立方体的六个平面,再用css3的transform属性移动六个平面组成3D的立方体结构

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>css3旋转立方体复刻1</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="wrapper">
        <div class="item item1">1</div>
        <div class="item item2">2</div>
        <div class="item item3">3</div>
        <div class="item item4">4</div>
        <div class="item item5">5</div>
        <div class="item item6">6</div>
    </div>
</body>
</html>

css3立方体样式

六个平面 正方形可以通过transform方法进行空间旋转和平移组成3D立方体。html页面内的坐标系水平方向自左向右为正方向、垂直方向自下向上为正方向、Z轴自页面内向页面外为正方向。六个面的移动参数如下:
1:Z轴方向移动50px和-50px组成前后两个面。
2:沿Y轴旋转90度和-90度,然后分别沿Z轴移动50px(平面沿X和Y轴旋转之后Z轴的方向会响应改变)组成左右两个面。
3:沿X轴旋转90度和-90度,然后分别沿Z轴移动50px,组成上下两个面。

.item1{
    background-color: #ff0;
    transform: translateZ(50px);
}
.item2{
    background-color: #f40;
    transform: translateZ(-50px);
}
.item3{
    background-color: #0ff;
    transform: rotateY(-90deg) translateZ(50px);
}
.item4{
    background-color: #0ff;
    transform: rotateY(90deg) translateZ(50px);
}
.item5{
    background-color: #00f;
    transform: rotateX(90deg) translateZ(50px);
}
.item6{
    background-color: #f0f;
    transform: rotateX(-90deg) translateZ(50px);
}

从立体坐标系上看六个正方形已经组成立方体,但从页面观察此时的页面结构仍为平面图形,因此需要给父级元素设置3D属性。给父级元素设置居中显示,加上transform-style属性,使之能够被人眼观察到3D动画。整个立方体的旋转特效使用animation关键帧动画实现。

.wrapper{
    width: 100px;
    height: 100px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -50px;
    margin-left: -50px;
    transform-style: preserve-3d;
    transform: rotateX(-30deg) rotateY(-90deg);
    transform: all 1s;
    animation: inifinteRotate 10s infinite linear;
}
@keyframes inifinteRotate{
    0%{
        transform: rotateY(360deg);
    }
    100%{
        transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg);
    }
}

利用关键帧动画让立方体父级元素围绕XYZ轴进行360度匀速旋转即可以实现单靠css3属性 实现3D立方体旋转动画。完整css代码如下:

*{
    margin: 0;
    padding: 0;
}
.wrapper{
    width: 100px;
    height: 100px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -50px;
    margin-left: -50px;
    transform-style: preserve-3d;
    transform: rotateX(-30deg) rotateY(-90deg);
    transform: all 1s;
    animation: inifinteRotate 10s infinite linear;
}
@keyframes inifinteRotate{
    0%{
        transform: rotateY(360deg);
    }
    100%{
        transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg);
    }
}
.item{
    width: 100%;
    height: 100%;
    position: absolute;
    font-size: 36px;
    color: #fff;
    text-align: center;
    line-height: 100px;
    opacity: 0.3;
}
.item1{
    background-color: #ff0;
    transform: translateZ(50px);
}
.item2{
    background-color: #f40;
    transform: translateZ(-50px);
}
.item3{
    background-color: #0ff;
    transform: rotateY(-90deg) translateZ(50px);
}
.item4{
    background-color: #0ff;
    transform: rotateY(90deg) translateZ(50px);
}
.item5{
    background-color: #00f;
    transform: rotateX(90deg) translateZ(50px);
}
.item6{
    background-color: #f0f;
    transform: rotateX(-90deg) translateZ(50px);
}
相关标签: css css3 html