如何使用CSS和JS动态更改圆的边框大小?

时间:2018-11-10 18:10:39

标签: javascript html css dom

我想制作一个有边界的圆,然后边界变小。然后当它的边界为0时,要更改颜色,最后圆的边界就长大了。为此,我使用了这段代码,但是圆并没有变小,然后长大,只改变了颜色。

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript">

        function yesno() {
            navigator.vibrate(500);
            for (var i = 0; i < 40; i++) {
                var px = 39 - i;
                document.getElementById("yesno").style.border = px + "px solid";
            }
            if (Math.random() < 0.5) {
                for (var i = 0; i < 40; i++) {
                    var px = 1 + i;
                    document.getElementById("yesno").style.border = px + "px solid rgba(0,1000,0,1)";
                }
            } else {
                for (var i = 0; i < 40; i++) {
                    var px = 1 + i;
                    document.getElementById("yesno").style.border = px + "px solid rgba(1000,0,0,1)";
                }
            }
        }
    </script>
    <style type="text/css">


        #yesno {
            position: absolute;
            border-radius: 50%;
            transition: all 1000ms linear;
            margin-left: 400px;
            margin-top: 60px;
            width: 120px;
            height: 120px;
            border: 40px solid rgba(1000,0,0,1);
        }

        #ynbtn {
            position: absolute;
            border: 40px solid rgba(0,0,0,1);
            margin-left: 440px;
            margin-top: 100px;
            width: 40px;
            height: 40px;
            border-radius: 50%;
        }

        </style>
    </head>
    <body>
        <div id="ploufisme">
            <div class="yesno" onclick="yesno()">
                <div id="yesno"></div>
                <div id="ynbtn"></div>
            </div>
                </div>
        </body>
</html>

1 个答案:

答案 0 :(得分:0)

嗯,有很多方法可以做到这一点。这是一个简单的方法。请注意,我分离了border属性,以便仅影响border-width属性的过渡。我认为这就是您想要做的。

var circle = document.querySelector('.circle');

function decreaseBorder() {
	circle.classList.add('thin');
  setTimeout(function() {
  	circle.classList.remove('thin');
    circle.classList.add('bold');
  }, 1000);
}

window.onload = function() { decreaseBorder(); }
.circle {
  border-radius: 50%;
  transition: border-width 1s linear;
  width: 120px;
  height: 120px;
  border-width: 40px;
  border-style: solid;
  border-color:  rgba(1000,0,0,1);
}

.thin {
  border-width: 0;
}

.bold {
  border-width: 40px;
  border-color: rgba(0,0,0,1);
}
<div class="circle"></div>