zoukankan      html  css  js  c++  java
  • 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{
             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: '';
             1px;
            height: 500px;
            background-color: #ff0;
            position: absolute;
            top: -100px;
            left: 150px;
        }
        .ball > div{
            border: 1px #ffffff solid;
            position: absolute;
             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>
    
  • 相关阅读:
    [语言基础] 我只想导入目标包中的一个模块,没想到目标包的其他非模块代码也被执行了。。
    [vscode] os.getcwd(),调试和命令行运行的结果不一致
    234. 回文链表
    不生成新数组的迭代器方法:forEach()&every()&some()&reduce()&reduceRight()
    合并数组并对数组排序
    为数组排序:sort()&reverse()
    从数组中间位置添加元素:unshift()方法的有一种运用
    从数组中删除元素:pop()&unshift()方法
    为数组添加元素:push()&unshift()方法
    由已有数组创建新数组:concat()&splice()方法
  • 原文地址:https://www.cnblogs.com/xiaobaizhiqian/p/8410338.html
Copyright © 2011-2022 走看看