javascript - 如何生成多个边界半径

标签 javascript html css

我正在尝试制作具有可变边框半径的形状。

基于修饰符,形状的边框半径应为 50%(当 Math.random() > 0.5 时)、20%(当 Math.random() > 0.8 时) ),默认为 0 %,给出一个普通的正方形。

但是,当您使用单击功能时,它只会给出 20% 半径或默认形状,而不是 50% 半径。

这是关键方法的简化版本:

function makeShapeAppear() {
    var top = Math.random() * 400;
    var left = Math.random() * 400;
    var width = (Math.random() * 100) + 100;

    if (Math.random() > 0.5) {
        document.getElementById("shape").style.borderRadius = "50%"
    } else {
        document.getElementById("shape").style.borderRadius = "0";
    }

    if (Math.random() > 0.8) {
        document.getElementById("shape").style.borderRadius = "20%"
    } else {
        document.getElementById("shape").style.borderRadius = "0";
    }
}

完整的代码片段:

var bestTime = 0;

var start = new Date().getTime();

function getRandomColor() {
    var letters = '0123456789ABCDEF'.split('');
    var color = '#';
    for (var i = 0; i < 6; i++) {
        color += letters[Math.floor(Math.random() * 16)];
    }
    return color;
}

function makeShapeAppear() {
    var top = Math.random() * 400;
    var left = Math.random() * 400;
    var width = (Math.random() * 100) + 100;
    if (Math.random() > 0.5) {
        document.getElementById("shape").style.borderRadius = "50%"
    } else {
        document.getElementById("shape").style.borderRadius = "0";
    }

    if (Math.random() > 0.8) {
        document.getElementById("shape").style.borderRadius = "20%"
    } else {
        document.getElementById("shape").style.borderRadius = "0";
    }

    document.getElementById("shape").style.backgroundColor = getRandomColor();
    document.getElementById("shape").style.width = width + "px";
    document.getElementById("shape").style.height = width + "px";
    document.getElementById("shape").style.top = top + "px";
    document.getElementById("shape").style.left = left + "px";
    document.getElementById("shape").style.display = "block";
    start = new Date().getTime();
}

function appearAfterDelay() {
    setTimeout(makeShapeAppear, Math.random() * 2000)
}

appearAfterDelay();

document.getElementById("shape").onclick = function() {
    document.getElementById("shape").style.display = "none";
    var end = new Date().getTime();
    var timeTaken = (end - start) / 1000;
    document.getElementById("timeTaken").innerHTML = timeTaken + "'s";
    if (timeTaken < bestTime || bestTime == 0) {
        bestTime = timeTaken;
        document.getElementById("best").innerHTML = bestTime + "s"
    }
    appearAfterDelay();
}
body {
    background-color: azure;
    margin: 0;
    padding: 0;
    font-family: sans-serif;
}

#shape {
    background-color: red;
    width: 200px;
    height: 200px;
    display: none;
    position: relative;
}

.bold {
    font-weight: bold;
}

#best {
    color: limegreen;
    font-weight: bold;
}
<head>
    <title>Javascript Test You Reactions</title>
</head>

<body>
    <h1>Test Your Reactions!</h1>
    <P>Click on the squares and circles as <em><ins>quickly</ins></em>as you can!</P>
    <p class="bold">Your time: <span id="timeTaken"></span></p>
    <p>Best time: <span id="best"></span></p>
    <div id="shape"></div>
</body>

最佳答案

您可以使用以下代码来获取形状半径

var  randomNumber = Math.Random();
if (randomNumber > 0.8) {
    document.getElementById("shape").style.borderRadius = "20%";
}
else if (randomNumber > 0.5) {
    document.getElementById("shape").style.borderRadius = "50%";
} else {
    document.getElementById("shape").style.borderRadius = "0";
}

关于javascript - 如何生成多个边界半径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47346908/

相关文章:

javascript - 垂直居中/更改计算高度 react 光滑

php - 如何在 Laravel 标签内定义复选框

html - SCRIPT、STYLE 和 LINK 元素的类型属性是否仍然需要?

javascript - Selenium如何处理IE找不到元素

css - 如何将 IFRAME 的背景颜色设置为其父文档的 BG 颜色?

html - Bootstrap - div,如何在不破坏响应能力的情况下使 div 中的第三个元素最右边

javascript - Phaser 3 中移动蒙版的问题

javascript - ag-grid + templateUrl 在 IE9 中崩溃

javascript - 函数未定义错误

CSS IE 7 block 元素不是 100% 宽度