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>

 

转载于:https://www.cnblogs.com/xiaobaizhiqian/p/8410338.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值