css3圆环旋转效果动画怎么做

html-css017

css3圆环旋转效果动画怎么做,第1张

1、首先新建一个html空白文档,取名字叫做css3动画,保存一下。

2、然后写html结构,只需要一个div元素即可,class名字叫做img

3、设置其边框为不同的颜色,边框宽度设置成100px。

4、因为是圆环,所以我们用到了css3的圆角效果,设置圆角为50%,也就是border-radius:50%,看一下效果。

5、接下来就是关键的步骤了,也就是添加动画效果。输入以下代码

6、来看一下最后的效果,还是不错的。

写了例子,效果不是很好,仅供参考

<!DOCTYPE html>

<html lang="en">

    <head>

    <meta http-equiv="Content-Type" content="text/html charset=utf-8">

    <title>IE浏览器CSS transform旋转属性的演示</title>

    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />

    <style type="text/css">

            body { font-family: "Arial", sans-serif }

            #example {

                position: absolute 

                top: 100px 

                left: 100px 

                border: #09f solid 1px 

                font-weight: 900 

                color: #09f 

                display: block 

                width: 200px 

                height: 200px 

                text-align:center

                line-height:200px

                cursor:pointer

            }

    </style>

    

    </head>

    <body>

    <div id="example">.</div>

        <script type="text/javascript">

            function rotate(percent, scale){

                var radian = Math.PI * percent

                var angle  = 180 * percent

                var scale  = 0.8

                var style  = document.getElementById("example").style

                var transform = "rotate("+ angle +"deg) scale("+ scale +")"

                style.filter = "progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand',M11="+Math.cos(radian)*scale+",M12="+(Math.sin(radian) * -1)*scale+",M21="+Math.sin(radian)*scale+",M22="+Math.cos(radian)*scale+")"

                style.MozTransform    = transform

                style.WebkitTransform = transform

                style.OTransform      = transform

                style.Transform       = transform

            }

            i=0.25

            setInterval("rotate(i)i+=0.01", 10)

        </script>

    </body>

</html>

这个只用css不能完全实现,的配合js的定时器来完成,下面是代码:

<!DOCTYPE html>  

<html>  

<head>  

    <title>HTML5</title>  

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />  

    <style type="text/css">

        img{width: 200px}

        .div1{width: 200pxheight: 200pxborder:1px solid #000margin: 150px auto}

        .animate1{

            -webkit-animation:  move1 2s infinite

        }

        .animate2{

            -webkit-animation:  move2 1s infinite

        }

        @-webkit-keyframes move1{

            0%{

                -webkit-transform:scale(1)

            }

            100%{

                -webkit-transform:scale(1.5)

            }

        }

        @-webkit-keyframes move2{

            0%{

                -webkit-transform: rotateZ(0deg) scale(1.5)

                -webkit-transform:

            }

            100%{

                -webkit-transform: rotateZ(360deg) scale(1.5)

            }

        }

    </style>

</head>  

<body> 

    <div class="div1 animate2"></div>

    <script type="text/javascript">

        window.onload=function(){

            var oDiv=document.querySelector(".div1")

            oDiv.className="div1 animate1"

            setTimeout(function(){

                oDiv.className="div1 animate2"

            },2000)

        }

    </script>  

</body>  

</html>

原理是:当animate1执行完后,把这个class去掉,换成animate2。其中animate1的执行时间,刚好是js定时器的时间。

当然这里有个问题,js定时的时间不一定会非常的吻合css的动画时间,你可以根据情况作出适当的时间调整。