CSS3实现3D球体旋转动画

html

<div class="ball-box">
    <div class="ball">
        <div class="line1"></div>
        <div class="line2"></div>
        <div class="line3"></div>
        <div class="line4"></div>
        <div class="line5"></div>
    </div>
</div>

 css

<style type="text/css">
    body{
        background-color: #000000;
    }
    .ball-box{
        width: 300px;
        height: 300px;
        position: absolute;
        left: 50%;
        top: 50%;
        margin: -150px 0 0 -150px;
        -webkit-perspective-origin: 50% 50%;
        -moz-perspective-origin: 50% 50%;
        -ms-perspective-origin: 50% 50%;
        -o-perspective-origin: 50% 50%;
        perspective-origin: 50% 50%;
        -webkit-perspective: 3000px;
        -moz-perspective: 3000px;
        -ms-perspective: 3000px;
        -o-perspective: 3000px;
        perspective: 3000px;
    }
    @-webkit-keyframes rotate3d {
        0%{
            -webkit-transform: rotateZ(-30deg) rotateY(0deg);
            -moz-transform: rotateZ(-30deg) rotateY(0deg);
            -ms-transform: rotateZ(-30deg) rotateY(0deg);
            -o-transform: rotateZ(-30deg) rotateY(0deg);
            transform: rotateZ(-30deg) rotateY(0deg);
        }
        100%{
            -webkit-transform: rotateZ(-30deg) rotateY(360deg);
            -moz-transform: rotateZ(-30deg) rotateY(360deg);
            -ms-transform: rotateZ(-30deg) rotateY(360deg);
            -o-transform: rotateZ(-30deg) rotateY(360deg);
            transform: rotateZ(-30deg) rotateY(360deg);
        }
    }
    @-moz-keyframes rotate3d {
        0%{
            -webkit-transform: rotateZ(-30deg) rotateY(0deg);
            -moz-transform: rotateZ(-30deg) rotateY(0deg);
            -ms-transform: rotateZ(-30deg) rotateY(0deg);
            -o-transform: rotateZ(-30deg) rotateY(0deg);
            transform: rotateZ(-30deg) rotateY(0deg);
        }
        100%{
            -webkit-transform: rotateZ(-30deg) rotateY(360deg);
            -moz-transform: rotateZ(-30deg) rotateY(360deg);
            -ms-transform: rotateZ(-30deg) rotateY(360deg);
            -o-transform: rotateZ(-30deg) rotateY(360deg);
            transform: rotateZ(-30deg) rotateY(360deg);
        }
    }
    @-ms-keyframes rotate3d {
        0%{
            -webkit-transform: rotateZ(-30deg) rotateY(0deg);
            -moz-transform: rotateZ(-30deg) rotateY(0deg);
            -ms-transform: rotateZ(-30deg) rotateY(0deg);
            -o-transform: rotateZ(-30deg) rotateY(0deg);
            transform: rotateZ(-30deg) rotateY(0deg);
        }
        100%{
            -webkit-transform: rotateZ(-30deg) rotateY(360deg);
            -moz-transform: rotateZ(-30deg) rotateY(360deg);
            -ms-transform: rotateZ(-30deg) rotateY(360deg);
            -o-transform: rotateZ(-30deg) rotateY(360deg);
            transform: rotateZ(-30deg) rotateY(360deg);
        }
    }
    @-o-keyframes rotate3d {
        0%{
            -webkit-transform: rotateZ(-30deg) rotateY(0deg);
            -moz-transform: rotateZ(-30deg) rotateY(0deg);
            -ms-transform: rotateZ(-30deg) rotateY(0deg);
            -o-transform: rotateZ(-30deg) rotateY(0deg);
            transform: rotateZ(-30deg) rotateY(0deg);
        }
        100%{
            -webkit-transform: rotateZ(-30deg) rotateY(360deg);
            -moz-transform: rotateZ(-30deg) rotateY(360deg);
            -ms-transform: rotateZ(-30deg) rotateY(360deg);
            -o-transform: rotateZ(-30deg) rotateY(360deg);
            transform: rotateZ(-30deg) rotateY(360deg);
        }
    }
    @keyframes rotate3d {
        0%{
            -webkit-transform: rotateZ(-30deg) rotateY(0deg);
            -moz-transform: rotateZ(-30deg) rotateY(0deg);
            -ms-transform: rotateZ(-30deg) rotateY(0deg);
            -o-transform: rotateZ(-30deg) rotateY(0deg);
            transform: rotateZ(-30deg) rotateY(0deg);
        }
        100%{
            -webkit-transform: rotateZ(-30deg) rotateY(360deg);
            -moz-transform: rotateZ(-30deg) rotateY(360deg);
            -ms-transform: rotateZ(-30deg) rotateY(360deg);
            -o-transform: rotateZ(-30deg) rotateY(360deg);
            transform: rotateZ(-30deg) rotateY(360deg);
        }
    }
    .ball{
        height: 100%;
        -webkit-transform-style: preserve-3d;
        -moz-transform-style: preserve-3d;
        -ms-transform-style: preserve-3d;
        transform-style: preserve-3d;
        -webkit-animation: rotate3d 30s linear infinite;
        -moz-animation: rotate3d 30s linear infinite;
        -ms-animation: rotate3d 30s linear infinite;
        -o-animation: rotate3d 30s linear infinite;
        animation: rotate3d 30s linear infinite;
    }
    .ball:after{
        display: block;
        content: '';
        width: 1px;
        height: 500px;
        background-color: #ff0;
        position: absolute;
        top: -100px;
        left: 150px;
    }
    .ball > div{
        border: 1px #ffffff solid;
        position: absolute;
        width: 100%;
        height: 100%;
        -webkit-border-radius: 50%;
        -moz-border-radius: 50%;
        border-radius: 50%;
    }
    .ball .line1{
        -webkit-transform: rotateY(0deg);
        -moz-transform: rotateY(0deg);
        -ms-transform: rotateY(0deg);
        -o-transform: rotateY(0deg);
        transform: rotateY(0deg);
    }
    .ball .line2{
        -webkit-transform: rotateY(36deg);
        -moz-transform: rotateY(36deg);
        -ms-transform: rotateY(36deg);
        -o-transform: rotateY(36deg);
        transform: rotateY(36deg);
    }
    .ball .line3{
        -webkit-transform: rotateY(72deg);
        -moz-transform: rotateY(72deg);
        -ms-transform: rotateY(72deg);
        -o-transform: rotateY(72deg);
        transform: rotateY(72deg);
    }
    .ball .line4{
        -webkit-transform: rotateY(108deg);
        -moz-transform: rotateY(108deg);
        -ms-transform: rotateY(108deg);
        -o-transform: rotateY(108deg);
        transform: rotateY(108deg);
    }
    .ball .line1{
        -webkit-transform: rotateY(144deg);
        -moz-transform: rotateY(144deg);
        -ms-transform: rotateY(144deg);
        -o-transform: rotateY(144deg);
        transform: rotateY(144deg);
    }
</style>

 

posted @ 2018-02-03 18:00  小白知浅  阅读(8373)  评论(0编辑  收藏  举报