Trippy Animation

Trippy Animation

HTML

<div class="scene">
    <div class="wrapper">
        <ul id="holder" class="ball">
        </ul>
    </div>
</div>

<!-- View Source on this page:
http://kx.nu/Animation_Test/
-->

CSS

@-webkit-keyframes roundAndRound {
    0% {
        -webkit-transform: rotateY(0deg) rotateZ(0deg);   
    }
    100% {
        -webkit-transform: rotateY(360deg) rotateZ(360deg);   
    }
}

@-webkit-keyframes begin {
    from {
        -webkit-transform: rotateX(0deg) scale(0);   
    }
}

@keyframes roundandround {
            0% {
                transform: rotateY(0deg) rotateZ(0deg) rotateX(0deg);
            }
            100% {
                transform: rotateY(360deg) rotateZ(360deg) rotateX(360deg);
            }
        }
        @keyframes begin {
            from {
                transform: rotateX(0deg) scale(0);
            }
        }

html, body {
    height: 100%;
    overflow: hidden;
}

body { background-color: #000000; }

.scene {
    position: relative;
    width: 300px;
    height: 300px;
    margin: 0 auto;
    -wekit-transform: translateY(-50%);
    transform: translateY(-50%);
}

.wrapper {
    width: 100%;
    height: 100%;
    -webkit-perspective: 10px;
    perspective: 10px;
}

.ball {
    position: relative;
    width: 70%;
    height: 70%;
    margin: 0 auto;
    list-style: none;
    -webkit-transform-style: preserve-3d;
    transform-style: preserve-3d;
    -webkit-animation: roundAndRound 100s infinite linear;
    animation: roundAndRound 100s infinite linear;
}

.ball .ring {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: 30%;
    border: 2px dashed;
    opacity: 1;
    -webkit-animation: begin;
    animation: begin;
    -webkit-animation-duration: 10s;
    animation-duration: 10s;
}

JavaScript

for (var i = 0; i < 100; i++) {
    var element = document.createElement('li');
    element.className = 'ring';
    
    element.style.color = "rgb(" + Math.floor((Math.random() * 200) + 100) + "," + Math.floor((Math.random() * 200) + 100) + "," + Math.floor((Math.random() * 200) + 100) + ")";
    
/*     element.style.webkitTransform = "rotateX(" + (i * 6) + "deg) scale(" + (i / 100 + 0.05) + ")";
    element.style.transform = "rotateX(" + (i * 6) + "deg) scale(" + (i / 100 + 0.05) + ")"; */
   
    element.style.webkitAnimationDuration = (i / 10 + 2) + "s";
    element.style.animationDuration = (i / 10 + 2) + "s";    
    
    var parent = document.getElementById('holder').appendChild(element);
}