CSS3 3D立方体多边形动画特效

CSS3 3D立方体多边形动画特效

关于css3 3D动画呢有三个效果

一、

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>CSS3 3D立方体多边形动画特效</title>
    <style type="text/css">
        * {
            margin: 0 auto;
            padding: 0;
        }

        @keyframes rotate {
            0% {
                transform: rotateX(0deg) rotateY(0deg);
            }

            100% {
                transform: rotateX(360deg) rotateY(360deg);
            }
        }

        html {
            background: linear-gradient(#ff0 0%, #000 80%);
            height: 100%;
        }

        .wrap {
            margin-top: 200px;
            perspective: 1000px;
            /* 视图距元素的距离 相当于摄像机 */
        }

        .cube {
            width: 200px;
            height: 200px;
            position: relative;
            color: #fff;
            font-size: 36px;
            font-weight: bold;
            text-align: center;
            line-height: 200px;
            transform-style: preserve-3d;
            /* 默认flat 2D */
            transform: rotateX(-30deg) rotateY(-70deg);
            animation: rotate 20s infinite linear;
            /*播放时间 播放次数为循环 缓动效果为匀速 */
        }

        .cube>div {
            width: 100%;
            height: 100%;
            border: 1px solid #fff;
            position: absolute;
            background-color: #333;
            opacity: .6;
            transition: transform 0.4s ease-in;
        }
        .cube .out-front {
            transform: translateZ(100px);
        }
        .cube .out-back {
            transform: translateZ(-100px) rotateY(180deg);
        }
        .cube .out-left {
            transform: translateX(-100px) rotateY(-90deg);
        }
        .cube .out-right {
            transform: translateX(100px) rotateY(90deg);
        }

        .cube .out-top {
            transform: translateY(-100px) rotateX(90deg);
        }
        .cube .out-bottom {
            transform: translateY(100px) rotateX(-90deg);
        }
        .cube>span {
            display: block;
            width: 100px;
            height: 100px;
            border: 1px solid black;
            background-color: #999;
            position: absolute;
            top: 50px;
            left: 50px;
        }
        .cube .in-front {
            transform: translateZ(50px);
        }
        .cube .in-back {
            transform: translateZ(-50px) rotateY(180deg);
        }
        .cube .in-left {
            transform: translateX(-50px) rotateY(-90deg);
        }
        .cube .in-right {
            transform: translateX(50px) rotateY(90deg);
        }
        .cube .in-top {
            transform: translateY(-50px) rotateX(90deg);
        }

        .cube .in-bottom {
            transform: translateY(50px) rotateX(-90deg);
        }
        .wrap:hover .out-front {
            transform: translateZ(200px);
        }
        .wrap:hover .out-back {
            transform: translateZ(-200px) rotateY(180deg);
        }
        .wrap:hover .out-left {
            transform: translateX(-200px) rotateY(-90deg);
        }

        .wrap:hover .out-right {
            transform: translateX(200px) rotateY(90deg);
        }
        .wrap:hover .out-top {
            transform: translateY(-200px) rotateX(90deg);
        }
        .wrap:hover .out-bottom {
            transform: translateY(200px) rotateX(-90deg);
        }
    </style>
</head>

<body>
    <div class="wrap">
        <div class="cube">
            <div class="out-front">前面</div>
            <div class="out-back">后面</div>
            <div class="out-left">左面</div>
            <div class="out-right">右面</div>
            <div class="out-top">上面</div>
            <div class="out-bottom">下面</div>

            <span class="in-front"></span>
            <span class="in-back"></span>
            <span class="in-left"></span>
            <span class="in-right"></span>
            <span class="in-top"></span>
            <span class="in-bottom"></span>
        </div>
    </div>
</body>
</html>

二、

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        @keyframes rotate{
        0%{
            transform:rotateX(0deg) rotateY(0deg);
        }
        100%{
            transform:rotateX(360deg) rotateY(360deg)
        }
    }
    *{
        margin:0 auto;
    }
    html{
        height:100%;
    }
    .container{
        /* perspective: 1000px; */
        margin-top:200px;
    }
        .box{
            width:200px;
            height:200px;
            position: relative;
            transform-style: preserve-3d;
            /* transform:rotateX(-30deg) rotateY(-70deg); */
            animation:rotate 15s infinite ; 
            text-align: center;
            line-height:200px;
            font-family: 微软雅黑;
            font-size: 80px;
        }
        .box>div{
            width:200px;
            height:200px;
            border:1px solid black;
            position: absolute;
        }
        .box>div:nth-child(1){
            background:cadetblue;
            transform: translateZ(100px);
        }
        .box>div:nth-child(6){
            background:blue;
            transform: translateZ(-100px) rotateY(180deg)
        }
        .box>div:nth-child(2){
            background:chartreuse;
            transform: translateX(-100px) rotateY(-90deg);
        }
        .box>div:nth-child(3){
            background:fuchsia;
            transform: translateX(100px) rotateY(90deg);
        }
        .box>div:nth-child(4){
            background:yellow;
            transform:translateY(-100px) rotateX(90deg) ;
        }
        .box>div:nth-child(5){
            background:red;
            transform:translateY(100px) rotateX(-90deg) ;
        }
        
        
    </style>
</head>
<body>
    <div class="container">
        <div class="box">
            <div>1</div>
            <div>2</div>
            <div>3</div>
            <div>4</div>
            <div>5</div>
            <div>6</div>
        </div>
    </div>
</body>
</html>

三、

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        *{
            margin:0 auto;
            padding:0;
        }
        @keyframes rotate{
            0%{
                transform:rotateX(0deg) rotateY(0deg);
            }
            100%{
                transform:rotateX(360deg) rotateY(360deg);
            }
        }
        html{
            background:linear-gradient(#ff0 0%,#000 80%);
            height:100%;
        }
        .wrap{
            perspective: 1000px;
            margin-top:200px;
        }
        .cube{
            width:200px;
            height:200px;
            position: relative;
            color:#fff;
            font-size: 36px;
            font-weight: bold;
            text-align: center;
            line-height: 200px;
            transform-style: preserve-3d;
            animation: rotate 20s infinite;
        }
        .cube>div{
            width:100%;
            height:100%;
            border:1px solid #fff;
            position: absolute;
            background:#333;
            opacity: .6;
            /* transform: transform 0.4s ease-in; */
        }
        .out-front{
            transform: translateZ(100px);
        }
        .out-back{
            transform: translateZ(-100px) rotateY(180deg);
        }
        .out-left{
            transform: translateX(-100px) rotateY(-90deg);
        }
        .out-right{
            transform: translateX(100px) rotateY(90deg);
        }
        .out-top{
            transform: translateY(-100px) rotateX(90deg);
        }
        .out-bottom{
            transform: translateY(100px) rotateX(-90deg);
        }
    </style>
</head>
<body>
    <div class="wrap">
        <div class="cube">
            <div class="out-front">前面</div>
            <div class="out-back">后面</div>
            <div class="out-left">左面</div>
            <div class="out-right">右面</div>
            <div class="out-top">上面</div>
            <div class="out-bottom">下面</div>

            <span class="in-front"></span>
            <span class="in-back"></span>
            <span class="in-left"></span>
            <span class="in-right"></span>
            <span class="in-top"></span>
            <span class="in-bottom"></span>
        </div>
    </div>
</body>
</html>

猜你喜欢

转载自blog.csdn.net/qq_43036190/article/details/106607994