用一个div+伪类画太极+动画

首先我们需要定义一个画出一个圆,然后需要对div进行样式修饰,线性渐变从白到黑

 #taiji {
            position: absolute;
            top: 50%;
            left: 50%;
            width: 200px;
            height: 200px;
            margin: -100px 0 0 -100px;
            background: linear-gradient(0deg, black 50%, white 50%);
            border-radius: 50%;
            border:1px black solid;
        }

如图所示

接下来我们需要分别对伪类进行样式的修改,大概思路伪类前后我们都画一个圆让它border为45px距离顶部为25%的高度宽高都为50%,content为"",不为空字符串无法修改,代码如下

   #taiji:before, #taiji:after {
            content: "";
            display: block;
            position: absolute;
            width: 50%;
            height: 50%;
            top: 25%;
            border-radius: 50%;
            border: 45px solid transparent;
        }

再接下来分别对伪类进行左右定位,设置黑白颜色,border-color也设置黑白

   #taiji:before {
            left: 0;
            border-color: black;
            background-color: white;
        }
        #taiji:after {
            right: 0;
            border-color: white;
            background-color: black;
        }

这样我们太极就画出来了

接下来我们给太极加一些动画,例如我们hover之后让太极变大2倍,并且旋转360°,并且无限循环,要实现的画我们需要先定义一个动画,代码如下

   @keyframes taiji {
            from{
                transform: rotate(0deg) scale(1);
            }
            to{
                transform: rotate(360deg) scale(2);
            }
        }

然后在hover事件之后触发这个动画

#taiji:hover {
            animation: taiji 1s ease 0s infinite; //第一个为动画名称(animation-name),第二个为时间(animation-duration),第三个是运动曲线(animation-timing-function),第四个为定义过渡效果何时开始(animation-delay)。第五个为规定动画应该播放的次数(animation-iteration-count)。第六个为规定是否应该轮流反向播放动画(animation-direction)。
        }

这样我们事件效果就完成了,如果你还要定义一些其他的,比如旋转,倾斜,放大也是可以实现的代码如图

   @keyframes taijiPic {
            form{
                transform: rotateX(0deg)(定义沿着 X 轴的 3D 旋转。) rotateY(30deg) rotateZ(60deg) skew(10deg,20deg) (定义沿着 X 和 Y 轴的 2D 倾斜转换。);
                opacity: 0  (透明度)
            }
            to{
                transform: rotateX(360deg) rotateY(390deg) rotateZ(420deg) skew(30deg,40deg);
                opacity: 1
            }
        }

然后在div上定义animation就行啦

      #taiji {
            position: absolute;
            top: 50%;
            left: 50%;
            width: 200px;
            height: 200px;
            margin: -100px 0 0 -100px;
            background: linear-gradient(0deg, black 50%, white 50%);
            border-radius: 50%;
            border:1px black solid;
            animation: taijiPic 5s ease-in infinite alternate;
        }

最后完整代码如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>太极</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        div, :before, :after {
            box-sizing: border-box;
        }
        #taiji {
            position: absolute;
            top: 50%;
            left: 50%;
            width: 200px;
            height: 200px;
            margin: -100px 0 0 -100px;
            background: linear-gradient(0deg, black 50%, white 50%);
            border-radius: 50%;
            border:1px black solid;
            animation: taijiPic 5s ease-in infinite alternate;
        }
        /*@keyframes taiji {*/
            /*from{*/
                /*transform: rotate(0deg) scale(1);*/
            /*}*/
            /*to{*/
                /*transform: rotate(360deg) scale(2);*/
            /*}*/
        /*}*/
        /*#taiji:hover {*/
            /*animation: taiji 1s ease 0s infinite;*/
        /*}*/
        @keyframes taijiPic {
            form{
                transform: rotateX(0deg) rotateY(30deg) rotateZ(60deg) skew(10deg,20deg);
                opacity: 0
            }
            to{
                transform: rotateX(360deg) rotateY(390deg) rotateZ(420deg) skew(30deg,40deg);
                opacity: 1
            }
        }
        #taiji:before, #taiji:after {
            content: "";
            display: block;
            position: absolute;
            width: 50%;
            height: 50%;
            top: 25%;
            border-radius: 50%;
            border: 45px solid transparent;
        }
        #taiji:before {
            left: 0;
            border-color: black;
            background-color: white;
        }
        #taiji:after {
            right: 0;
            border-color: white;
            background-color: black;
        }
    </style>
</head>
<body>
<div id="taiji"></div>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值