抖音超火❤ html+css+js 实现炫酷3D魔方(免费附源码)

抖音超火❤ html+css+js 实现炫酷3D魔方(免费附源码)

在这里插入图片描述

完整代码

复制就能跑,记得点赞好评一下博客哦…

<html>

<head>
    <meta charset="utf-8">
    <script id="jqbb" src="https://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>

    <style type="text/css">
        html,
        body {
     
     
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
        }

        *,
        *:before,
        *:after {
     
     
            -webkit-box-sizing: border-box;
            box-sizing: border-box;
            position: relative;
            -webkit-animation-timing-function: cubic-bezier(0.5, 0, 0, 1) !important;
            animation-timing-function: cubic-bezier(0.5, 0, 0, 1) !important;
        }

        body {
     
     
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-pack: center;
            -ms-flex-pack: center;
            justify-content: center;
            -webkit-box-align: center;
            -ms-flex-align: center;
            align-items: center;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
            -webkit-perspective: 1000px;
            perspective: 1000px;
            background: -webkit-gradient(linear, left top, right bottom, from(#a4c5c7), to(#2D3F48));
            background: linear-gradient(to bottom right, #a4c5c7, #2D3F48);
        }

        body:hover>label,
        body:hover>input {
     
     
            opacity: 1;
        }

        label,
        #shadows {
     
     
            position: fixed;
            top: 2vmin;
            opacity: 0.5;
        }

        label {
     
     
            left: 6vmin;
            color: white;
            font-weight: bold;
        }

        #shadows {
     
     
            left: 2vmin;
        }

        #shadows:not(:checked)~.cubes {
     
     
            --shadow-filter: none;
        }

        .cubes {
     
     
            width: 10vmin;
            height: 10vmin;
            -webkit-transform: rotateX(60deg) rotateZ(-45deg);
            transform: rotateX(60deg) rotateZ(-45deg);
            -webkit-backface-visibility: visible;
            backface-visibility: visible;
            overflow: visible;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
            -webkit-perspective: 9000px;
            perspective: 9000px;
        }

        .cube,
        .large-shadow {
     
     
            height: 10vmin;
            width: 10vmin;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
            -webkit-backface-visibility: visible;
            backface-visibility: visible;
            -webkit-transform-origin: center center -.5vmin;
            transform-origin: center center -.5vmin;
            position: absolute;
            top: 0;
            left: 0;
        }

        .cube>.cube-wrap,
        .large-shadow>.cube-wrap {
     
     
            -webkit-animation: cube 4s infinite both;
            animation: cube 4s infinite both;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            -webkit-transform-style: preserve-3d;
            transform-style: preserve-3d;
            -webkit-backface-visibility: visible;
            backface-visibility: visible;
            -webkit-transform-origin: center center -.5vmin;
            transform-origin: center center -.5vmin;
            will-change: transform;
        }

        @-webkit-keyframes cube {
     
     
            from,
            to,
            20%,
            60% {
     
     
                -webkit-animation-timing-function: step-start;
                animation-timing-function: step-start;
                -webkit-transform: none;
                transform: none;
            }
            40% {
     
     
                -webkit-transform: rotateY(-1turn);
                transform: rotateY(-1turn);
            }
        }

        @keyframes cube {
     
     
            from,
            to,
            20%,
            60% {
     
     
                -webkit-animation-timing-function: step-start;
                animation-timing-function: step-start;
                -webkit-transform: none;
                transform: none;
            }
            40% {
     
     
                -webkit-transform: rotateY(-1turn);
                transform: rotateY(-1turn);
            }
        }

        .cube[data-cube^="1"],
        .large-shadow[data-cube^="1"] {
     
     
            top: calc(-10vmin - 2px);
            --color-bg-top: #A0EBE8;
            --color-bg-bottom: #89E4E4;
            --color-fl-top: #4EAFBC;
            --color-fl-bottom: #43A5B2;
        }

        .cube[data-cube^="2"],
        .large-shadow[data-cube^="2"] {
     
     
            --color-bg-top: #89E4E4;
            --color-bg-bottom: #76DEE5;
            --color-fl-top: #43A5B2;
            --color-fl-bottom: #3D93A9;
        }

        .cube[data-cube^="3"],
        .large-shadow[data-cube^="3"] {
     
     
            top: calc(10vmin + 2px);
            --color-bg-top: #76DEE5;
            --color-bg-bottom: #63D3D4;
            --color-fl-top: #3D93A9;
            --color-fl-bottom: #3B8D9F;
        }

        .cube[data-cube^="11"],
        .cube[data-cube^="21"],
        .cube[data-cube^="31"],
        .large-shadow[data-cube^="11"],
        .large-shadow[data-cube^="21"],
        .large-shadow[data-cube^="31"] {
     
     
            left: calc(-10vmin - 2px);
            --color-fr-top: #2D505F;
            --color-fr-bottom: #2D4F63;
        }

        .cube[data-cube^="12"],
        .cube[data-cube^="22"],
        .cube[data-cube^="32"],
        .large-shadow[data-cube^="12"],
        .large-shadow[data-cube^="22"],
        .large-shadow[data-cube^="32"] {
     
     
            --color-fr-top: #2D4F63;
            --color-fr-bottom: #2A5262;
        }

        .cube[data-cube^="13"],
        .cube[data-cube^="23"],
        .cube[data-cube^="33"],
        .large-shadow[data-cube^="13"],
        .large-shadow[data-cube^="23"],
        .large-shadow[data-cube^="33"] {
     
     
            left: calc(10vmin + 2px);
            --color-fr-top: #2A5262;
            --color-fr-bottom: #2A5467;
        }

        .cube[data-cube$="2"],
        .large-shadow[data-cube$="2"] {
     
     
            -webkit-transform: translateZ(calc(10vmin + 2px));
            transform: translateZ(calc(10vmin + 2px));
        }

        .cube[data-cube$="3"],
        .large-shadow[data-cube$="3"] {
     
     
            -webkit-transform: translateZ(calc(-10vmin - 2px));
            transform: translateZ(calc(-10vmin - 2px));
        }

        .large-shadows {
     
     
            -webkit-transform: translateZ(-21vmin);
            transform: translateZ(-21vmin);
        }

        .large-shadow {
     
     
            background: black;
            height: 10vmin;
            width: 10vmin;
            -webkit-transform-origin: top right;
            transform-origin: top right;
            -webkit-animation: large-shadow 4s infinite both;
            animation: large-shadow 4s infinite both;
            -webkit-filter: var(--shadow-filter, blur(3vmin));
            filter: var(--shadow-filter, blur(3vmin));
            opacity: 0.2;
            will-change: transform;
        }

        @-webkit-keyframes large-shadow {
     
     
            from,
            80%,
            to {
     
     
                -webkit-transform: scale(1.5, 3);
                transform: scale(1.5, 3);
            }
            20% {
     
     
                -webkit-transform: scale(1.5, 2);
                transform: scale(1.5, 2);
            }
            40%,
            60% {
     
     
                -webkit-transform: scale(1.5, 5);
                transform: scale(1.5, 5);
            }
            50% {
     
     
                -webkit-transform: scale(1, 5);
                transform: scale(1, 5);
            }
        }

        @keyframes large-shadow {
     
     
            from,
            80%,
            to {
     
     
                -webkit-transform: scale(1.5, 3);
                transform: scale(1.5, 3);
            }
            20% {
     
     
                -webkit-transform: scale(1.5, 2);
                transform: scale(1.5, 2);
            }
            40%,
            60% {
     
     
                -webkit-transform: scale(1.5, 5);
                transform: scale(1.5, 5);
            }
            50% {
     
     
                -webkit-transform: scale(1, 5);
                transform: scale(1, 5);
            }
        }

        [class^="cube-"] {
     
     
            position: absolute;
            width: 100%;
            height: 100%;
            -webkit-backface-visibility: visible;
            backface-visibility: visible;
            top: 0;
            left: 0;
        }

        [class^="cube-"],
        [class^="cube-"]:before {
     
     
            will-change: transform;
            -webkit-animation: any 4s infinite both;
            animation: any 4s infinite both;
        }

        [class^="cube-"]:before {
     
     
            content: '';
            display: block;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: inherit;
        }

        .cube-top {
     
     
            -webkit-animation-name: cube-top;
            animation-name: cube-top;
            overflow: hidden;
        }

        .cube-top:before,
        .cube-top:after {
     
     
            will-change: transform;
        }

        .cube-top:before {
     
     
            background-image: -webkit-gradient(linear, left top, left bottom, from(#CBFEFF), to(transparent)), -webkit-gradient(linear, left top, left bottom, from(var(--color-bg-top)), to(var(--color-bg-bottom)));
            background-image: linear-gradient(to bottom, #CBFEFF, transparent), linear-gradient(to bottom, var(--color-bg-top), var(--color-bg-bottom));
            background-size: 2px 100%, auto;
            background-repeat: no-repeat;
        }

        .cube-top:after {
     
     
            content: '';
            display: block;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: #DFF4F0;
            -webkit-animation: cube-top-flash 4s infinite both;
            animation: cube-top-flash 4s infinite both;
        }

        @-webkit-keyframes cube-top-flash {
     
     
            from,
            50%,
            60%,
            to {
     
     
                opacity: 0;
            }
            52% {
     
     
                opacity: 0.9;
            }
        }

        @keyframes cube-top-flash {
     
     
            from,
            50%,
            60%,
            to {
     
     
                opacity: 0;
            }
            52% {
     
     
                opacity: 0.9;
            }
        }

        @-webkit-keyframes cube-top {
     
     
            20% {
     
     
                -webkit-transform: translateZ(calc(-10vmin + 2vmin));
                transform: translateZ(calc(-10vmin + 2vmin));
            }
            40%,
            60%,
            80% {
     
     
                -webkit-transform: none;
                transform: none;
            }
        }

        @keyframes cube-top {
     
     
            20% {
     
     
                -webkit-transform: translateZ(calc(-10vmin + 2vmin));
                transform: translateZ(calc(-10vmin + 2vmin));
            }
            40%,
            60%,
            80% {
     
     
                -webkit-transform: none;
                transform: none;
            }
        }

        .cube-front-left {
     
     
            -webkit-transform-origin: left center;
            transform-origin: left center;
            -webkit-transform: rotateY(90deg);
            transform: rotateY(90deg);
            overflow: hidden;
        }

        .cube-front-left:before {
     
     
            background-image: -webkit-gradient(linear, left top, left bottom, from(var(--color-fl-top)), to(var(--color-fl-bottom))), -webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.5)), color-stop(60%, transparent));
            background-image: linear-gradient(to bottom, var(--color-fl-top), var(--color-fl-bottom)), linear-gradient(to bottom, rgba(255, 255, 255, 0.5), transparent 60%);
            background-size: auto auto 1px 100%;
            background-repeat: no-repeat;
            -webkit-transform-origin: right;
            transform-origin: right;
            -webkit-animation-name: cube-front-left;
            animation-name: cube-front-left;
            will-change: transform;
        }

        @-webkit-keyframes cube-front-left {
     
     
            20% {
     
     
                -webkit-transform: scaleX(0.2);
                transform: scaleX(0.2);
            }
            40%,
            60% {
     
     
                -webkit-transform: translateX(-8vmin) scaleX(0.2);
                transform: translateX(-8vmin) scaleX(0.2);
            }
            80% {
     
     
                -webkit-transform: none;
                transform: none;
            }
        }

        @keyframes cube-front-left {
     
     
            20% {
     
     
                -webkit-transform: scaleX(0.2);
                transform: scaleX(0.2);
            }
            40%,
            60% {
     
     
                -webkit-transform: translateX(-8vmin) scaleX(0.2);
                transform: translateX(-8vmin) scaleX(0.2);
            }
            80% {
     
     
                -webkit-transform: none;
                transform: none;
            }
        }

        .cube-front-right {
     
     
            -webkit-transform-origin: bottom center;
            transform-origin: bottom center;
            -webkit-transform: rotateX(90deg);
            transform: rotateX(90deg);
        }

        .cube-front-right:before {
     
     
            background-image: -webkit-gradient(linear, left top, right top, from(var(--color-fr-top)), to(var(--color-fr-bottom)));
            background-image: linear-gradient(to right, var(--color-fr-top), var(--color-fr-bottom));
            -webkit-transform-origin: top;
            transform-origin: top;
            -webkit-animation-name: cube-front-right;
            animation-name: cube-front-right;
            will-change: transform;
        }

        @-webkit-keyframes cube-front-right {
     
     
            20% {
     
     
                -webkit-transform: scaleY(0.2);
                transform: scaleY(0.2);
            }
            40%,
            60% {
     
     
                -webkit-transform: translateY(8vmin) scaleY(0.2);
                transform: translateY(8vmin) scaleY(0.2);
            }
            80% {
     
     
                -webkit-transform: none;
                transform: none;
            }
        }

        @keyframes cube-front-right {
     
     
            20% {
     
     
                -webkit-transform: scaleY(0.2);
                transform: scaleY(0.2);
            }
            40%,
            60% {
     
     
                -webkit-transform: translateY(8vmin) scaleY(0.2);
                transform: translateY(8vmin) scaleY(0.2);
            }
            80% {
     
     
                -webkit-transform: none;
                transform: none;
            }
        }

        .cube-bottom {
     
     
            -webkit-transform: translateZ(-10vmin);
            transform: translateZ(-10vmin);
            background-image: -webkit-gradient(linear, left top, left bottom, from(var(--color-bg-top)), to(var(--color-bg-bottom)));
            background-image: linear-gradient(to bottom, var(--color-bg-top), var(--color-bg-bottom));
            -webkit-animation-name: cube-bottom;
            animation-name: cube-bottom;
        }

        @-webkit-keyframes cube-bottom {
     
     
            from,
            20%,
            80%,
            to {
     
     
                -webkit-transform: translateZ(calc(-10vmin + 1px)) scale(0.95);
                transform: translateZ(calc(-10vmin + 1px)) scale(0.95);
            }
            40%,
            60% {
     
     
                -webkit-transform: translateZ(-2vmin) scale(0.95);
                transform: translateZ(-2vmin) scale(0.95);
            }
        }

        @keyframes cube-bottom {
     
     
            from,
            20%,
            80%,
            to {
     
     
                -webkit-transform: translateZ(calc(-10vmin + 1px)) scale(0.95);
                transform: translateZ(calc(-10vmin + 1px)) scale(0.95);
            }
            40%,
            60% {
     
     
                -webkit-transform: translateZ(-2vmin) scale(0.95);
                transform: translateZ(-2vmin) scale(0.95);
            }
        }

        .cube-bottom:after {
     
     
            content: '';
            display: block;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: #DFF4F0;
            -webkit-animation: cube-bottom-flash 4s infinite both;
            animation: cube-bottom-flash 4s infinite both;
            will-change: transform;
        }

        @-webkit-keyframes cube-bottom-flash {
     
     
            from,
            40%,
            50%,
            to {
     
     
                opacity: 0;
            }
            45% {
     
     
                opacity: 0.9;
            }
        }

        @keyframes cube-bottom-flash {
     
     
            from,
            40%,
            50%,
            to {
     
     
                opacity: 0;
            }
            45% {
     
     
                opacity: 0.9;
            }
        }

        [class^="shadow"] {
     
     
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            overflow: hidden;
            -webkit-filter: var(--shadow-filter, blur(20px));
            filter: var(--shadow-filter, blur(20px));
        }

        [class^="shadow"],
        [class^="shadow"]:before {
     
     
            will-change: transform;
        }

        [class^="shadow"]:before {
     
     
            content: '';
            display: block;
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: #214354;
            opacity: 0.7;
        }

        .shadow-y {
     
     
            -webkit-animation: shadow-y 4s infinite both;
            animation: shadow-y 4s infinite both;
        }

        .shadow-y[data-cube^="11"],
        .shadow-y[data-cube^="21"] {
     
     
            left: 10%;
        }

        .shadow-y[data-cube^="13"],
        .shadow-y[data-cube^="23"] {
     
     
            left: -10%;
        }

        @-webkit-keyframes shadow-y {
     
     
            to,
            40%,
            60%,
            80%,
            from {
     
     
                -webkit-transform: translateY(-100%) scale(2, 0.75);
                transform: translateY(-100%) scale(2, 0.75);
            }
            20% {
     
     
                -webkit-transform: scale(2, 1);
                transform: scale(2, 1);
            }
        }

        @keyframes shadow-y {
     
     
            to,
            40%,
            60%,
            80%,
            from {
     
     
                -webkit-transform: translateY(-100%) scale(2, 0.75);
                transform: translateY(-100%) scale(2, 0.75);
            }
            20% {
     
     
                -webkit-transform: scale(2, 1);
                transform: scale(2, 1);
            }
        }

        .shadow-y:before {
     
     
            -webkit-animation: shadow-y-inverse 4s infinite both;
            animation: shadow-y-inverse 4s infinite both;
            -webkit-transform-origin: top center;
            transform-origin: top center;
        }

        @-webkit-keyframes shadow-y-inverse {
     
     
            to,
            40%,
            60%,
            80%,
            from {
     
     
                opacity: 0.9;
                -webkit-transform: scale(2, 1);
                transform: scale(2, 1);
            }
            20% {
     
     
                opacity: 0;
                -webkit-transform: translateY(-100%) scale(2, 0.75);
                transform: translateY(-100%) scale(2, 0.75);
            }
        }

        @keyframes shadow-y-inverse {
     
     
            to,
            40%,
            60%,
            80%,
            from {
     
     
                opacity: 0.9;
                -webkit-transform: scale(2, 1);
                transform: scale(2, 1);
            }
            20% {
     
     
                opacity: 0;
                -webkit-transform: translateY(-100%) scale(2, 0.75);
                transform: translateY(-100%) scale(2, 0.75);
            }
        }

        .shadow-flip {
     
     
            width: 2vmin;
            height: 50%;
            top: -1vmin;
            left: calc(50% - 1vmin);
            -webkit-transform-origin: top center;
            transform-origin: top center;
            -webkit-filter: var(--shadow-filter, blur(1vmin));
            filter: var(--shadow-filter, blur(1vmin));
            -webkit-animation: shadow-flip 4s infinite both;
            animation: shadow-flip 4s infinite both;
            overflow: visible;
        }

        @-webkit-keyframes shadow-flip {
     
     
            from,
            20%,
            40%,
            50%,
            to {
     
     
                -webkit-transform: rotate(90deg);
                transform: rotate(90deg);
            }
            45% {
     
     
                -webkit-transform: rotate(270deg);
                transform: rotate(270deg);
            }
        }

        @keyframes shadow-flip {
     
     
            from,
            20%,
            40%,
            50%,
            to {
     
     
                -webkit-transform: rotate(90deg);
                transform: rotate(90deg);
            }
            45% {
     
     
                -webkit-transform: rotate(270deg);
                transform: rotate(270deg);
            }
        }

        .shadow-flip:before {
     
     
            -webkit-animation: shadow-flip-inverse 4s infinite both;
            animation: shadow-flip-inverse 4s infinite both;
            -webkit-transform-origin: top center;
            transform-origin: top center;
            opacity: 0;
        }

        @-webkit-keyframes shadow-flip-inverse {
     
     
            from,
            20%,
            40%,
            50%,
            to {
     
     
                -webkit-transform: rotate(0deg);
                transform: rotate(0deg);
                opacity: 0;
            }
            45% {
     
     
                -webkit-transform: rotate(-180deg);
                transform: rotate(-180deg);
                opacity: 0.6;
            }
        }

        @keyframes shadow-flip-inverse {
     
     
            from,
            20%,
            40%,
            50%,
            to {
     
     
                -webkit-transform: rotate(0deg);
                transform: rotate(0deg);
                opacity: 0;
            }
            45% {
     
     
                -webkit-transform: rotate(-180deg);
                transform: rotate(-180deg);
                opacity: 0.6;
            }
        }

        .shadow-z {
     
     
            -webkit-animation: shadow-z 4s infinite both;
            animation: shadow-z 4s infinite both;
            overflow: visible;
            will-change: transform;
            -webkit-transform-origin: top center;
            transform-origin: top center;
        }

        .shadow-z[data-cube^="11"] {
     
     
            --shadow-z-left: 50%;
            --shadow-z-top: 50%;
        }

        .shadow-z[data-cube^="21"],
        .shadow-z[data-cube^="31"] {
     
     
            --shadow-z-left: 50%;
            --shadow-z-top: 0;
        }

        .shadow-z[data-cube^="32"] {
     
     
            --shadow-z-left: 0;
            --shadow-z-top: 0;
            --shadow-x-scale: 2;
        }

        .shadow-z[data-cube^="33"] {
     
     
            --shadow-z-left: -50%;
            --shadow-z-top: 0;
        }

        @-webkit-keyframes shadow-z {
     
     
            from,
            40%,
            60%,
            80%,
            to {
     
     
                -webkit-transform: scale(var(--shadow-x-scale), 2);
                transform: scale(var(--shadow-x-scale), 2);
            }
            20% {
     
     
                -webkit-transform: translateX(var(--shadow-z-left)) translateY(var(--shadow-z-top)) scale(calc(var(--shadow-x-scale, 1) / 2), 2);
                transform: translateX(var(--shadow-z-left)) translateY(var(--shadow-z-top)) scale(calc(var(--shadow-x-scale, 1) / 2), 2);
            }
        }

        @keyframes shadow-z {
     
     
            from,
            40%,
            60%,
            80%,
            to {
     
     
                -webkit-transform: scale(var(--shadow-x-scale), 2);
                transform: scale(var(--shadow-x-scale), 2);
            }
            20% {
     
     
                -webkit-transform: translateX(var(--shadow-z-left)) translateY(var(--shadow-z-top)) scale(calc(var(--shadow-x-scale, 1) / 2), 2);
                transform: translateX(var(--shadow-z-left)) translateY(var(--shadow-z-top)) scale(calc(var(--shadow-x-scale, 1) / 2), 2);
            }
        }

        .shadow-z:before {
     
     
            -webkit-animation: shadow-z-inverse 4s infinite both;
            animation: shadow-z-inverse 4s infinite both;
        }

        @-webkit-keyframes shadow-z-inverse {
     
     
            40%,
            60% {
     
     
                -webkit-transform: translateX(var(--shadow-z-left)) translateY(var(--shadow-z-top)) scale(var(--shadow-x-scale, 1), 2);
                transform: translateX(var(--shadow-z-left)) translateY(var(--shadow-z-top)) scale(var(--shadow-x-scale, 1), 2);
            }
            45% {
     
     
                opacity: 0;
            }
            from,
            40%,
            55% {
     
     
                opacity: .5;
            }
            to {
     
     
                opacity: 1;
            }
            from,
            20%,
            80%,
            to {
     
     
                -webkit-transform: scale(2);
                transform: scale(2);
            }
        }

        @keyframes shadow-z-inverse {
     
     
            40%,
            60% {
     
     
                -webkit-transform: translateX(var(--shadow-z-left)) translateY(var(--shadow-z-top)) scale(var(--shadow-x-scale, 1), 2);
                transform: translateX(var(--shadow-z-left)) translateY(var(--shadow-z-top)) scale(var(--shadow-x-scale, 1), 2);
            }
            45% {
     
     
                opacity: 0;
            }
            from,
            40%,
            55% {
     
     
                opacity: .5;
            }
            to {
     
     
                opacity: 1;
            }
            from,
            20%,
            80%,
            to {
     
     
                -webkit-transform: scale(2);
                transform: scale(2);
            }
        }

        .cube[data-cube="111"]>.cube-wrap,
        .cube[data-cube="111"]>.cube-wrap:before,
        .cube[data-cube="111"]>.cube-wrap:after,
        .cube[data-cube="111"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="111"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="111"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 129ms;
            animation-delay: 129ms;
        }

        .cube[data-cube="111"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 129ms;
            animation-delay: 129ms;
        }

        [class^="shadow-"][data-cube="111"]:before,
        .large-shadow[data-cube="111"] {
     
     
            -webkit-animation-delay: 129ms;
            animation-delay: 129ms;
        }

        .cube[data-cube="112"]>.cube-wrap,
        .cube[data-cube="112"]>.cube-wrap:before,
        .cube[data-cube="112"]>.cube-wrap:after,
        .cube[data-cube="112"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="112"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="112"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 280ms;
            animation-delay: 280ms;
        }

        .cube[data-cube="112"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 280ms;
            animation-delay: 280ms;
        }

        [class^="shadow-"][data-cube="112"]:before,
        .large-shadow[data-cube="112"] {
     
     
            -webkit-animation-delay: 280ms;
            animation-delay: 280ms;
        }

        .cube[data-cube="113"]>.cube-wrap,
        .cube[data-cube="113"]>.cube-wrap:before,
        .cube[data-cube="113"]>.cube-wrap:after,
        .cube[data-cube="113"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="113"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="113"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 75ms;
            animation-delay: 75ms;
        }

        .cube[data-cube="113"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 75ms;
            animation-delay: 75ms;
        }

        [class^="shadow-"][data-cube="113"]:before,
        .large-shadow[data-cube="113"] {
     
     
            -webkit-animation-delay: 75ms;
            animation-delay: 75ms;
        }

        .cube[data-cube="121"]>.cube-wrap,
        .cube[data-cube="121"]>.cube-wrap:before,
        .cube[data-cube="121"]>.cube-wrap:after,
        .cube[data-cube="121"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="121"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="121"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 255ms;
            animation-delay: 255ms;
        }

        .cube[data-cube="121"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 255ms;
            animation-delay: 255ms;
        }

        [class^="shadow-"][data-cube="121"]:before,
        .large-shadow[data-cube="121"] {
     
     
            -webkit-animation-delay: 255ms;
            animation-delay: 255ms;
        }

        .cube[data-cube="122"]>.cube-wrap,
        .cube[data-cube="122"]>.cube-wrap:before,
        .cube[data-cube="122"]>.cube-wrap:after,
        .cube[data-cube="122"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="122"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="122"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 178ms;
            animation-delay: 178ms;
        }

        .cube[data-cube="122"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 178ms;
            animation-delay: 178ms;
        }

        [class^="shadow-"][data-cube="122"]:before,
        .large-shadow[data-cube="122"] {
     
     
            -webkit-animation-delay: 178ms;
            animation-delay: 178ms;
        }

        .cube[data-cube="123"]>.cube-wrap,
        .cube[data-cube="123"]>.cube-wrap:before,
        .cube[data-cube="123"]>.cube-wrap:after,
        .cube[data-cube="123"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="123"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="123"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 45ms;
            animation-delay: 45ms;
        }

        .cube[data-cube="123"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 45ms;
            animation-delay: 45ms;
        }

        [class^="shadow-"][data-cube="123"]:before,
        .large-shadow[data-cube="123"] {
     
     
            -webkit-animation-delay: 45ms;
            animation-delay: 45ms;
        }

        .cube[data-cube="131"]>.cube-wrap,
        .cube[data-cube="131"]>.cube-wrap:before,
        .cube[data-cube="131"]>.cube-wrap:after,
        .cube[data-cube="131"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="131"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="131"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 183ms;
            animation-delay: 183ms;
        }

        .cube[data-cube="131"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 183ms;
            animation-delay: 183ms;
        }

        [class^="shadow-"][data-cube="131"]:before,
        .large-shadow[data-cube="131"] {
     
     
            -webkit-animation-delay: 183ms;
            animation-delay: 183ms;
        }

        .cube[data-cube="132"]>.cube-wrap,
        .cube[data-cube="132"]>.cube-wrap:before,
        .cube[data-cube="132"]>.cube-wrap:after,
        .cube[data-cube="132"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="132"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="132"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 53ms;
            animation-delay: 53ms;
        }

        .cube[data-cube="132"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 53ms;
            animation-delay: 53ms;
        }

        [class^="shadow-"][data-cube="132"]:before,
        .large-shadow[data-cube="132"] {
     
     
            -webkit-animation-delay: 53ms;
            animation-delay: 53ms;
        }

        .cube[data-cube="133"]>.cube-wrap,
        .cube[data-cube="133"]>.cube-wrap:before,
        .cube[data-cube="133"]>.cube-wrap:after,
        .cube[data-cube="133"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="133"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="133"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 111ms;
            animation-delay: 111ms;
        }

        .cube[data-cube="133"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 111ms;
            animation-delay: 111ms;
        }

        [class^="shadow-"][data-cube="133"]:before,
        .large-shadow[data-cube="133"] {
     
     
            -webkit-animation-delay: 111ms;
            animation-delay: 111ms;
        }

        .cube[data-cube="211"]>.cube-wrap,
        .cube[data-cube="211"]>.cube-wrap:before,
        .cube[data-cube="211"]>.cube-wrap:after,
        .cube[data-cube="211"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="211"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="211"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 151ms;
            animation-delay: 151ms;
        }

        .cube[data-cube="211"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 151ms;
            animation-delay: 151ms;
        }

        [class^="shadow-"][data-cube="211"]:before,
        .large-shadow[data-cube="211"] {
     
     
            -webkit-animation-delay: 151ms;
            animation-delay: 151ms;
        }

        .cube[data-cube="212"]>.cube-wrap,
        .cube[data-cube="212"]>.cube-wrap:before,
        .cube[data-cube="212"]>.cube-wrap:after,
        .cube[data-cube="212"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="212"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="212"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 122ms;
            animation-delay: 122ms;
        }

        .cube[data-cube="212"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 122ms;
            animation-delay: 122ms;
        }

        [class^="shadow-"][data-cube="212"]:before,
        .large-shadow[data-cube="212"] {
     
     
            -webkit-animation-delay: 122ms;
            animation-delay: 122ms;
        }

        .cube[data-cube="213"]>.cube-wrap,
        .cube[data-cube="213"]>.cube-wrap:before,
        .cube[data-cube="213"]>.cube-wrap:after,
        .cube[data-cube="213"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="213"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="213"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 56ms;
            animation-delay: 56ms;
        }

        .cube[data-cube="213"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 56ms;
            animation-delay: 56ms;
        }

        [class^="shadow-"][data-cube="213"]:before,
        .large-shadow[data-cube="213"] {
     
     
            -webkit-animation-delay: 56ms;
            animation-delay: 56ms;
        }

        .cube[data-cube="221"]>.cube-wrap,
        .cube[data-cube="221"]>.cube-wrap:before,
        .cube[data-cube="221"]>.cube-wrap:after,
        .cube[data-cube="221"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="221"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="221"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 274ms;
            animation-delay: 274ms;
        }

        .cube[data-cube="221"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 274ms;
            animation-delay: 274ms;
        }

        [class^="shadow-"][data-cube="221"]:before,
        .large-shadow[data-cube="221"] {
     
     
            -webkit-animation-delay: 274ms;
            animation-delay: 274ms;
        }

        .cube[data-cube="222"]>.cube-wrap,
        .cube[data-cube="222"]>.cube-wrap:before,
        .cube[data-cube="222"]>.cube-wrap:after,
        .cube[data-cube="222"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="222"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="222"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 146ms;
            animation-delay: 146ms;
        }

        .cube[data-cube="222"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 146ms;
            animation-delay: 146ms;
        }

        [class^="shadow-"][data-cube="222"]:before,
        .large-shadow[data-cube="222"] {
     
     
            -webkit-animation-delay: 146ms;
            animation-delay: 146ms;
        }

        .cube[data-cube="223"]>.cube-wrap,
        .cube[data-cube="223"]>.cube-wrap:before,
        .cube[data-cube="223"]>.cube-wrap:after,
        .cube[data-cube="223"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="223"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="223"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 47ms;
            animation-delay: 47ms;
        }

        .cube[data-cube="223"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 47ms;
            animation-delay: 47ms;
        }

        [class^="shadow-"][data-cube="223"]:before,
        .large-shadow[data-cube="223"] {
     
     
            -webkit-animation-delay: 47ms;
            animation-delay: 47ms;
        }

        .cube[data-cube="231"]>.cube-wrap,
        .cube[data-cube="231"]>.cube-wrap:before,
        .cube[data-cube="231"]>.cube-wrap:after,
        .cube[data-cube="231"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="231"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="231"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 29ms;
            animation-delay: 29ms;
        }

        .cube[data-cube="231"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 29ms;
            animation-delay: 29ms;
        }

        [class^="shadow-"][data-cube="231"]:before,
        .large-shadow[data-cube="231"] {
     
     
            -webkit-animation-delay: 29ms;
            animation-delay: 29ms;
        }

        .cube[data-cube="232"]>.cube-wrap,
        .cube[data-cube="232"]>.cube-wrap:before,
        .cube[data-cube="232"]>.cube-wrap:after,
        .cube[data-cube="232"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="232"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="232"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 81ms;
            animation-delay: 81ms;
        }

        .cube[data-cube="232"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 81ms;
            animation-delay: 81ms;
        }

        [class^="shadow-"][data-cube="232"]:before,
        .large-shadow[data-cube="232"] {
     
     
            -webkit-animation-delay: 81ms;
            animation-delay: 81ms;
        }

        .cube[data-cube="233"]>.cube-wrap,
        .cube[data-cube="233"]>.cube-wrap:before,
        .cube[data-cube="233"]>.cube-wrap:after,
        .cube[data-cube="233"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="233"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="233"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 238ms;
            animation-delay: 238ms;
        }

        .cube[data-cube="233"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 238ms;
            animation-delay: 238ms;
        }

        [class^="shadow-"][data-cube="233"]:before,
        .large-shadow[data-cube="233"] {
     
     
            -webkit-animation-delay: 238ms;
            animation-delay: 238ms;
        }

        .cube[data-cube="311"]>.cube-wrap,
        .cube[data-cube="311"]>.cube-wrap:before,
        .cube[data-cube="311"]>.cube-wrap:after,
        .cube[data-cube="311"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="311"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="311"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 103ms;
            animation-delay: 103ms;
        }

        .cube[data-cube="311"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 103ms;
            animation-delay: 103ms;
        }

        [class^="shadow-"][data-cube="311"]:before,
        .large-shadow[data-cube="311"] {
     
     
            -webkit-animation-delay: 103ms;
            animation-delay: 103ms;
        }

        .cube[data-cube="312"]>.cube-wrap,
        .cube[data-cube="312"]>.cube-wrap:before,
        .cube[data-cube="312"]>.cube-wrap:after,
        .cube[data-cube="312"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="312"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="312"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 195ms;
            animation-delay: 195ms;
        }

        .cube[data-cube="312"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 195ms;
            animation-delay: 195ms;
        }

        [class^="shadow-"][data-cube="312"]:before,
        .large-shadow[data-cube="312"] {
     
     
            -webkit-animation-delay: 195ms;
            animation-delay: 195ms;
        }

        .cube[data-cube="313"]>.cube-wrap,
        .cube[data-cube="313"]>.cube-wrap:before,
        .cube[data-cube="313"]>.cube-wrap:after,
        .cube[data-cube="313"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="313"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="313"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 81ms;
            animation-delay: 81ms;
        }

        .cube[data-cube="313"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 81ms;
            animation-delay: 81ms;
        }

        [class^="shadow-"][data-cube="313"]:before,
        .large-shadow[data-cube="313"] {
     
     
            -webkit-animation-delay: 81ms;
            animation-delay: 81ms;
        }

        .cube[data-cube="321"]>.cube-wrap,
        .cube[data-cube="321"]>.cube-wrap:before,
        .cube[data-cube="321"]>.cube-wrap:after,
        .cube[data-cube="321"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="321"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="321"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 294ms;
            animation-delay: 294ms;
        }

        .cube[data-cube="321"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 294ms;
            animation-delay: 294ms;
        }

        [class^="shadow-"][data-cube="321"]:before,
        .large-shadow[data-cube="321"] {
     
     
            -webkit-animation-delay: 294ms;
            animation-delay: 294ms;
        }

        .cube[data-cube="322"]>.cube-wrap,
        .cube[data-cube="322"]>.cube-wrap:before,
        .cube[data-cube="322"]>.cube-wrap:after,
        .cube[data-cube="322"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="322"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="322"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 147ms;
            animation-delay: 147ms;
        }

        .cube[data-cube="322"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 147ms;
            animation-delay: 147ms;
        }

        [class^="shadow-"][data-cube="322"]:before,
        .large-shadow[data-cube="322"] {
     
     
            -webkit-animation-delay: 147ms;
            animation-delay: 147ms;
        }

        .cube[data-cube="323"]>.cube-wrap,
        .cube[data-cube="323"]>.cube-wrap:before,
        .cube[data-cube="323"]>.cube-wrap:after,
        .cube[data-cube="323"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="323"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="323"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 218ms;
            animation-delay: 218ms;
        }

        .cube[data-cube="323"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 218ms;
            animation-delay: 218ms;
        }

        [class^="shadow-"][data-cube="323"]:before,
        .large-shadow[data-cube="323"] {
     
     
            -webkit-animation-delay: 218ms;
            animation-delay: 218ms;
        }

        .cube[data-cube="331"]>.cube-wrap,
        .cube[data-cube="331"]>.cube-wrap:before,
        .cube[data-cube="331"]>.cube-wrap:after,
        .cube[data-cube="331"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="331"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="331"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 240ms;
            animation-delay: 240ms;
        }

        .cube[data-cube="331"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 240ms;
            animation-delay: 240ms;
        }

        [class^="shadow-"][data-cube="331"]:before,
        .large-shadow[data-cube="331"] {
     
     
            -webkit-animation-delay: 240ms;
            animation-delay: 240ms;
        }

        .cube[data-cube="332"]>.cube-wrap,
        .cube[data-cube="332"]>.cube-wrap:before,
        .cube[data-cube="332"]>.cube-wrap:after,
        .cube[data-cube="332"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="332"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="332"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 251ms;
            animation-delay: 251ms;
        }

        .cube[data-cube="332"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 251ms;
            animation-delay: 251ms;
        }

        [class^="shadow-"][data-cube="332"]:before,
        .large-shadow[data-cube="332"] {
     
     
            -webkit-animation-delay: 251ms;
            animation-delay: 251ms;
        }

        .cube[data-cube="333"]>.cube-wrap,
        .cube[data-cube="333"]>.cube-wrap:before,
        .cube[data-cube="333"]>.cube-wrap:after,
        .cube[data-cube="333"]>.cube-wrap>[class^="cube-"],
        .cube[data-cube="333"]>.cube-wrap>[class^="cube-"]:before,
        .cube[data-cube="333"]>.cube-wrap>[class^="cube-"]:after {
     
     
            -webkit-animation-delay: 73ms;
            animation-delay: 73ms;
        }

        .cube[data-cube="333"]>.cube-wrap [class^="shadow-"] {
     
     
            -webkit-animation-delay: 73ms;
            animation-delay: 73ms;
        }

        [class^="shadow-"][data-cube="333"]:before,
        .large-shadow[data-cube="333"] {
     
     
            -webkit-animation-delay: 73ms;
            animation-delay: 73ms;
        }
    </style>
</head>

<body>
    <input type="checkbox" id="shadows" checked /><label for="shadows">Soft shadows</label>
    <div class="cubes">

        <div class="cube" data-cube="111">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-z" data-cube="112"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="121">
            <div class="cube-wrap">
                <div class="cube-top">
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="131">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-z" data-cube="132"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="211">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="111"></div>
                    <div class="shadow-y" data-cube="111"></div>
                    <div class="shadow-z" data-cube="212"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="221">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="121"></div>
                    <div class="shadow-y" data-cube="121"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="231">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="131"></div>
                    <div class="shadow-y" data-cube="131"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="311">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="211"></div>
                    <div class="shadow-y" data-cube="211"></div>
                    <div class="shadow-z" data-cube="312"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="321">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="221"></div>
                    <div class="shadow-y" data-cube="221"></div>
                    <div class="shadow-z" data-cube="322"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="331">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="231"></div>
                    <div class="shadow-y" data-cube="231"></div>
                    <div class="shadow-z" data-cube="332"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>

        <div class="cube" data-cube="112">
            <div class="cube-wrap">
                <div class="cube-top">
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="122">
            <div class="cube-wrap">
                <div class="cube-top">
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="132">
            <div class="cube-wrap">
                <div class="cube-top">
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="212">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="112"></div>
                    <div class="shadow-y" data-cube="112"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="222">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="122"></div>
                    <div class="shadow-y" data-cube="122"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="232">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="132"></div>
                    <div class="shadow-y" data-cube="132"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="312">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="212"></div>
                    <div class="shadow-y" data-cube="212"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="322">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="222"></div>
                    <div class="shadow-y" data-cube="222"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="332">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="232"></div>
                    <div class="shadow-y" data-cube="232"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>

        <div class="cube" data-cube="113">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-z" data-cube="111"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="123">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-z" data-cube="121"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="133">
            <div class="cube-wrap">
                <div class="cube-top">
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="213">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="113"></div>
                    <div class="shadow-y" data-cube="113"></div>
                    <div class="shadow-z" data-cube="211"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="223">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-y" data-cube="123"></div>
                    <div class="shadow-z" data-cube="221"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="233">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-y" data-cube="133"></div>
                    <div class="shadow-z" data-cube="231"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="313">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="213"></div>
                    <div class="shadow-y" data-cube="213"></div>
                    <div class="shadow-z" data-cube="311"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="323">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="223"></div>
                    <div class="shadow-y" data-cube="223"></div>
                    <div class="shadow-z" data-cube="321"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="cube" data-cube="333">
            <div class="cube-wrap">
                <div class="cube-top">
                    <div class="shadow-flip" data-cube="233"></div>
                    <div class="shadow-y" data-cube="233"></div>
                    <div class="shadow-z" data-cube="331"></div>
                </div>
                <div class="cube-bottom"></div>
                <div class="cube-front-left"></div>
                <div class="cube-front-right"></div>
                <div class="cube-back-left"></div>
                <div class="cube-back-right"></div>
            </div>
        </div>
        <div class="large-shadows">
            <div class="large-shadow" data-cube="113"></div>
            <div class="large-shadow" data-cube="123"></div>
            <div class="large-shadow" data-cube="133"></div>
            <div class="large-shadow" data-cube="213"></div>
            <div class="large-shadow" data-cube="223"></div>
            <div class="large-shadow" data-cube="233"></div>
            <div class="large-shadow" data-cube="313"></div>
            <div class="large-shadow" data-cube="323"></div>
            <div class="large-shadow" data-cube="333"></div>
        </div>
    </div>
</body>
<script>
</script>

</html>

❤解决上线问题> (不需要服务器就能免费部署上线)部署上线工具(永久可用)

不需要买服务器就能部署线上,全世界都能访问你的连接啦, 这里给大家推荐一个程序员必备软件 , **需要可滴滴 **
插件集成了超级多好用的插件,免费下载安装,简单易懂, 简直神器

1.部署流程在这里插入图片描述

2.连接成功

将你写好的页面部署上线后, 全世界的人都可以愉快的访问到你的网页了(永久免费使用哦)

在这里插入图片描述

前端 零基础 入门到高级教学 (视频+源码+开发软件+学习资料+面试题) 一整套

在这里插入图片描述

~ 关注我,点赞博文~ 每天带你涨知识!

1.看到这里了就 [点赞+好评+收藏] 支持下吧,你的「点赞,好评,收藏」是我创作的动力。

2.关注我~ 每天带你学习 :各种前端插件、3D炫酷效果、图片展示、文字效果、以及整站模板 、大学生毕业设计模板 等! 「在这里有好多 前端 开发者,会讨论 前端 Node 知识,互相学习」!

3.以上内容技术相关问题可以留言/私信交流,也可以关注↓下方公众号 获取更多源码 !

在这里插入图片描述

更多源码

❤女朋友生日❤ HTML+css3+js 实现抖音炫酷樱花3D相册 (含背景音乐)程序员表白必备

❤七夕情人节❤html+css+js 漫天飞雪3D相册(含音乐自定义文字) 程序员表白必备

❤炫酷烟花表白❤ html+css+js 放一场浪漫烟花秀(含音乐) 程序员表白

❤唯美满天星❤ html+css+js炫酷3D相册(含音乐可自定义文字)程序员表白必备

新年祝福❤雪花飘落❤ html+css3+js 实现3D相册开关闭合旋转(情人节生日表白)必备

❤爱情墙❤html5+css3+js 实现全屏七夕表白页面 (可自定义文字相片)

❤[前端永久免费部署上线工具] 解决不需要服务器就能将项目部署上线问题!

❤超炫100套❤vue+echarts大屏可视化数据平台实战项目模板 (vuereact 均可使用)

抖音❤超火| html+css+js 流星雨3D相册(表白必备)制作教程来啦!

前端❤ html+css+js 实现1000个超炫酷特效(附源码)

web前端❤基于html+css+js 仿JD天猫电商平台功能齐全(免费附源码)

抖音超火❤ html+css+js 实现炫酷3D立方图像库(免费附源码)

抖音超火❤ html+css+js 实现炫酷3D魔方(免费附源码)

抖音超火❤流动爱心 html+css+js (免费附源码)

抖音超火❤罗盘时钟html+css+js (免费附源码)

亲测有效❤抖音视频去水印 ( 附源码| 仅供学习参考)

css3 实现3D旋转立方体(免费附源码)

css3 实现3D立体时钟(免费附源码)

❤雪花飘落❤ html+css+js实现2021新年倒计时特效(附源码)

这个冬天, 我是这样表白的 ❉html+css+js❉ 绘制冬季下雪3D相册 (521程序员表白代码大公开)

七夕情人节 ❤html+css+j❤实现满屏爱心特效(程序员表白)

❤html+css+js❤ 白云飘动3D相册(含音乐)程序员表白必备

一款乾坤八卦风水罗盘旋转CSS3动画,给人一种玄机重重的感觉(附源码)

猜你喜欢

转载自blog.csdn.net/weixin_54234482/article/details/112212812