立体线框球型旋转的实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        body{
            background-color: #000;
        }
        .ball-box{
            width: 300px;
            height: 300px;
            position: absolute;
            left: 50%;
            top: 50%;
            margin: -150px 0 0 -150px;
            perspective: 3000px;  /* 其子元素获得透视效果*/
            perspective-origin: 50% 50%;
        }
        @-webkit-keyframes rotate3d {
            0%{transform: rotateZ(-30deg) rotateY(0deg);}
            100%{transform: rotateZ(-30deg) rotateY(360deg);}
        }
        .ball {
            height: 100%;
            transform-style: preserve-3d; /*所有的子元素呈现3d视图*/
            -webkit-animation: rotate3d 30s infinite linear;
            /*transform: rotateZ(-30deg) rotateY(0deg);*/
        }
        .ball:after{
            content: '';
            width: 1px;
            height: 500px;
            background-color: #ff0;
            display: block;
            position: absolute;
            transform: translateX(150px) translateY(-100px);
        }

        .ball > div{
            border: 1px #fff solid;
            position: absolute;
            width: 100%;
            height: 100%;
            border-radius: 100%;
        }
        .ball .line-1{transform: rotateY(0deg)}
        .ball .line-2{transform: rotateY(36deg)}
        .ball .line-3{transform: rotateY(72deg)}
        .ball .line-4{transform: rotateY(108deg)}
        .ball .line-5{transform: rotateY(144deg)}
    </style>
</head>
<body>
        <!--

            层叠样式表(CSS)的主要目的是给HTML元素添加样式,然而,在一些案例中给文档添加额外的元素是多余的或是不可能的。
            事实上CSS中有一个特性允许我们添加额外元素而不扰乱文档本身,这就是“伪元素”。

            使用伪元素是相对容易的,:before将会在内容之前“添加”一个元素而:after将会在内容后“添加”一个元素。
            在它们之中添加内容我们可以使用content属性。


            尽管作为“虚假”的元素,事实上伪元素表现上就像是“真正”的元素,我们能够给它们添加任何样式,比如改变它们的颜色、
            添加背景色、调整字体大小、调整它们中的文本等等。

            默认生成的元素是一个内联元素,于是当我们想要指定它们的高度和宽度时,首先不得不使用display: block把它们声明为块级元素。
            :after 选择器在被选元素的内容后面插入内容。
                    请使用 content 属性来指定要插入的内容
        -->
        <div class="ball-box">
            <div class="ball">
                <div  class="line-1"></div>
                <div  class="line-2"></div>
                <div  class="line-3"></div>
                <div  class="line-4"></div>
                <div  class="line-5"></div>
            </div>
        </div>


</body>
</html>

你可能感兴趣的:(动画,css3,3D)