Как динамически изменить размер границы круга с помощью CSS и JS? - PullRequest
0 голосов
/ 10 ноября 2018

Я хочу сделать круг, у которого есть граница, и граница становится меньше. Затем, когда он имеет границу 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 голосов
/ 10 ноября 2018

Ну, есть много способов сделать это. Это простой способ. Обратите внимание, что я отделил свойства границы, чтобы переход затрагивал только свойство 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...