CSS3实现轮回写轮眼

182 阅读1分钟

“我正在参加「创意开发 投稿大赛」详情请看:掘金创意开发大赛来了! [css3]新增了不少比较有意思的属性,今天笔者根据css3中的动画属性,简单创作了一个轮回写轮眼,供喜爱动漫的青少年欣赏学习。 笔者下面贴出全部代码,然后对代码中部分知识点进行讲解。请看代码: *{padding: 0;margin: 0;} html body{ background: black; } .box1{ width: 600px; height: 400px; background: white; border: 5px solid black; margin-left: 0px; margin-top: 100px; border-radius: 0px 100%; position: relative; transform: rotate(-15deg); overflow: hidden; float: left; } .box2{ width: 600px; height: 400px; background: white; border: 5px solid black; margin-left: 0px; margin-top: 100px; border-radius: 100% 0px; position: relative; transform: rotate(15deg); overflow: hidden; float: right; } .xielunyan{ width: 200px; height: 200px; background: black; border-radius: 50%; position: absolute; left: 50%; top: 50%; margin-left: -100px; margin-top: -100px; box-shadow: 0px 0px 10px 10px #333; } .box1 .xielunyan{ animation: run1 3s infinite linear; } .box2 .xielunyan{ animation: run 3s infinite linear; } .tongkong{ width: 50px; height: 50px; border-radius: 50%; background: black; position: absolute; left: 50%; top: 50%; margin-top: -25px; margin-left: -25px; } .xing1,.xing2,.xing3{ width: 138px; height: 138px; border-radius: 100% 0px; border: 2px black solid; background: #b10a0a; position: absolute; left: 50%; top: 50%; margin-top: -70px; margin-left: -70px; opacity: 0.6; filter: alpha(opacity=60); } .xing2{ transform: rotate(60deg); } .xing3{ transform: rotate(120deg); } .quan1{ width: 300px; height: 300px; border: 2px solid black; border-radius: 50%; position: absolute; left: 50%; top: 50%; margin-top: -150px; margin-left: -150px; } .box1 .quan1{ animation: run 3s infinite linear; } .box2 .quan1{ animation: run1 3s infinite linear; } .quan2{ width: 420px; height: 420px; border: 2px solid black; border-radius: 50%; position: absolute; left: 50%; top: 50%; margin-top: -210px; margin-left: -210px; animation: run 3s infinite linear;


        }
        .box1 .quan2{
            animation: run 3s infinite linear;
        }
        .box2 .quan2{
            animation: run1 3s infinite linear;
        }
        .quan3{
            width: 520px;
            height: 520px;
            border: 2px solid black;
            border-radius: 50%;
            position: absolute;
            left: 50%;
            top: 50%;
            margin-top: -260px;
            margin-left: -260px;
            animation: run 3s infinite linear;
​
        }
        .box1 .quan3{
            animation: run 3s infinite linear;
        }
        .box2 .quan3{
            animation: run1 3s infinite linear;
        }
        span{
            display: block;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            position: absolute;
        }
        .up{
            width: 30px;
            height: 30px;
            background: black;
            left: -15px;
            top: 0px;
        }
        .down{
            background: white;
            left: -10px;
            bottom: 0px;
        }
        .dou1,.dou2,.dou3{
            width: 20px;
            height: 40px;
            background: black;
            border-radius: 0px 20px 20px 0px;
            position: absolute;
            left: 50%;
            top: 50%;
            margin-top: -20px;
            margin-left: -10px;
        }
        .quan1 .dou1{
            transform: rotate(120deg) translateX(160px);
        }
        .quan1 .dou2{
            transform: rotate(240deg) translateX(160px);
        }
        .quan1 .dou3{
            transform: rotate(360deg) translateX(160px);
        }
        .quan2 .dou1{
            transform: rotate(60deg) translateX(220px);
        }
        .quan2 .dou2{
            transform: rotate(180deg) translateX(220px);
        }
        .quan2 .dou3{
            transform: rotate(300deg) translateX(220px);
        }
        .quan3 .dou1{
            transform: rotate(120deg) translateX(270px);
        }
        .quan3 .dou2{
            transform: rotate(240deg) translateX(270px);
        }
        .quan3 .dou3{
            transform: rotate(360deg) translateX(270px);
        }
        @keyframes run{
            from{}
            to{transform: rotate(360deg);}
        }
        @keyframes run1{
            from{}
            to{transform: rotate(-360deg);}
        }
    </style>
</head>
<body>
    <!--左眼-->
    <div class="box1">
        <div class="yankuang">
            <!--轮回眼-->
            <div class="lunhuiyan">
                <div class="quan1">
                    <div class="dou1">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou2">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou3">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                </div>
                <div class="quan2">
                    <div class="dou1">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou2">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou3">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                </div>
                <div class="quan3">
                    <div class="dou1">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou2">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou3">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                </div>
            </div>
            <!--写轮眼-->
            <div class="xielunyan">
                <div class="xing1"></div>
                <div class="xing2"></div>
                <div class="xing3"></div>
                <div class="tongkong"></div>
            </div>
        </div>
    </div>
    <!--右眼-->
    <div class="box2">
        <div class="yankuang">
            <!--轮回眼-->
            <div class="lunhuiyan">
                <div class="quan1">
                    <div class="dou1">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou2">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou3">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                </div>
                <div class="quan2">
                    <div class="dou1">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou2">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou3">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                </div>
                <div class="quan3">
                    <div class="dou1">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou2">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                    <div class="dou3">
                        <span class="down"></span>
                        <span class="up"></span>
                    </div>
                </div>
            </div>
            <!--写轮眼-->
            <div class="xielunyan">
                <div class="xing1"></div>
                <div class="xing2"></div>
                <div class="xing3"></div>
                <div class="tongkong"></div>
            </div>
        </div>
    </div>
</body>

读者看一看,在上述代码中,有这么一块代码:

@keyframes run{ from{} to{transform: rotate(360deg);} }1234这是设置一个动画,to是动画的终点。引用这段动画的代码就是:

animation: run 3s infinite linear;1run是设置的动画名称,3s是动画完成一次需要的时间,infinite设置动画无限循环,linear设置动画变现形式是线性的。此外还用到了rotate旋转,translate位移以及box-shadow阴影等属性。并没有什么难点。包括勾玉和六芒星全部都是代码产生。但是其中的难点就是如何设计那些样式。读者可以自行运行代码,细细体会。