基于CSS3伪元素和动画绘制旋转太极图

通过CSS3的动画知识来完成一个旋转的太极。

任务

1、创建一个div,用CSS控制其大小、边框、位置等,做成一个静态的圆形,一半为红色一半为白色。

2、用div的伪元素位置两个圆环并放置核实位置,使其成为一个太极图案。

3、创建动画。

4、定义动画的重复属性,让其循环播放。

<!DOCTYPE html>
<html>

<head lang="zh-CN">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">

    <title></title>
    <style>
        /* 外围样式 */
        html,
        body {
            margin: 0;
            padding: 0;
            height: 100%;
        }

        /* 主体样式 */

        div {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            box-sizing: border-box;
            width: 400px;
            height: 400px;
            margin: auto;
            border-bottom: 200px solid red;
            border-radius: 50%;
            transform-origin: 50% 50%;
            animation-name: rotate;
            animation-duration: 5s;
            animation-timing-function: linear;
            /* 补充代码 */     
        }

       
    </style>
</head>

<body>
    <div></div>
</body>

</html>

  参考代码:

<!DOCTYPE html>
<html>

<head lang="zh-CN">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">

    <title></title>
    <style>
        /* 外围样式 */
        html,
        body {
            margin: 0;
            padding: 0;
            height: 100%;
        }

        /* 主体样式 */

        div {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            box-sizing: border-box;
            width: 400px;
            height: 400px;
            margin: auto;
            border-bottom: 200px solid red;
            border-radius: 50%;
            transform-origin: 50% 50%;
            animation-name: rotate;
            animation-duration: 5s;
            animation-timing-function: linear;
            /* 补充代码 */
            box-shadow: 0 0 0 1px red,
                0 0 20px 5px red;
            border-top: 200px solid white;
            animation-direction: normal;
            animation-iteration-count: infinite;
            animation-play-state: running;
        }

        /* 太极半圆 */
        div::after {
            width: 100px;
            height: 100px;
            border: 50px solid red;
            position: absolute;
            content: '';
            display: block;
            top: -100px;
            left: 0;
            border-radius: 50%;
            background-color: white;

        }

        div::before {
            width: 100px;
            height: 100px;
            border: 50px solid white;
            position: absolute;
            content: '';
            display: block;
            top: -100px;
            right: 0px;
            border-radius: 50%;
            background-color: red;

        }

        @keyframes rotate {
            from {
                transform: rotateZ(0deg);
            }

            to {
                transform: rotateZ(360deg);
            }
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>

  

 

posted @ 2019-10-08 16:04  请叫我二狗哥  阅读(598)  评论(0编辑  收藏  举报