首页 > 解决方案 > 如何随机更改元素的背景图像?

问题描述

我最近创建了一个程序,当有人点击它时会创建新元素。创建的新元素具有一些特定的 CSS 样式。现在我希望它的背景在用户点击按钮时随机改变。就像第一次有人点击背景是红色的,另一次是绿色的,依此类推......我的代码是 -

function a1click(){
      var body = document.querySelector('body');
        var bubbles = document.createElement("span");
        var size = Math.random() * 100;
        bubbles.style.width = 10 + size+'px';
        bubbles.style.height = 10 + size+'px';
        body.appendChild(bubbles);
        setTimeout(function(){
            bubbles.remove();
        },1000)      
  }
*{
    margin: 0;
    padding: 0;
}
body{
    background: rgb(73, 156, 145);
}
#a1{
    position: relative;
    top: 350px;
    left: 100px;
    width: 30px;
    height: 150px;
    border: 2px solid #fff;
    background: rgb(0, 0, 0);
    float: left;
    cursor: pointer;
    perspective: 600;
}
span{
    position: absolute;
    top: 120px;
    left: 60%;
    width: 50px;
    height: 50px;
    background: #000;
    animation: tweek 1s linear infinite;
    transform-origin: top;
    background-size: cover;
    pointer-events: none;
}
@keyframes tweek {
    0% {
      transform: rotate(90deg) translate(300px);
    }
  
    100% {
      transform: rotate(0deg) translate(250px);
      opacity: 0;
    }
  }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>
</head>
<body onkeydown="keypress(event)">
    <div id="a1" onclick="a1click()"></div>
    <script src="script.js"></script>
</body>
</html>

我希望这个框的背景颜色随机改变..请帮助,任何帮助表示赞赏..

标签: javascripthtmlcssrandom

解决方案


正如您从代码中看到的那样,我创建了一个函数,将数字随机化并将它们放入 rgb 中。

  function random_bg_color() {
    var x = Math.floor(Math.random() * 256);
    var y = Math.floor(Math.random() * 256);
    var z = Math.floor(Math.random() * 256);
    var bgColor = "rgb(" + x + "," + y + "," + z + ")";
    return  bgColor;
   
    }
    
function a1click(){
      var body = document.querySelector('body');
        var bubbles = document.createElement("span");
        var size = Math.random() * 100;
        bubbles.style.width = 10 + size+'px';
        bubbles.style.height = 10 + size+'px';
        bubbles.style.backgroundColor = random_bg_color();
        body.appendChild(bubbles);
        setTimeout(function(){
            bubbles.remove();
        },1000)      
  }
  
*{
    margin: 0;
    padding: 0;
}
body{
    background: rgb(73, 156, 145);
}
#a1{
    position: relative;
    top: 350px;
    left: 100px;
    width: 30px;
    height: 150px;
    border: 2px solid #fff;
    background: rgb(0, 0, 0);
    float: left;
    cursor: pointer;
    perspective: 600;
}
span{
    position: absolute;
    top: 120px;
    left: 60%;
    width: 50px;
    height: 50px;
    background: #000;
    animation: tweek 1s linear infinite;
    transform-origin: top;
    background-size: cover;
    pointer-events: none;
}
@keyframes tweek {
    0% {
      transform: rotate(90deg) translate(300px);
    }
  
    100% {
      transform: rotate(0deg) translate(250px);
      opacity: 0;
    }
  }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>
</head>
<body onkeydown="keypress(event)">
    <div id="a1" onclick="a1click()"></div>
    <script src="script.js"></script>
</body>
</html>

回答您的评论:

生成随机图像:

var Images = new Array("https://via.placeholder.com/150/0000FF/808080","https://via.placeholder.com/150/FF0000/FFFFFF",
"https://via.placeholder.com/150/FFFF00/000000");

function randompic() {
     var randomNum = Math.floor(Math.random() * Images.length);
     return Images[randomNum];
     
     }
    
function a1click(){
      var body = document.querySelector('body');
        var bubbles = document.createElement("span");
        var size = Math.random() * 100;
        bubbles.style.width = 10 + size+'px';
        bubbles.style.height = 10 + size+'px';
        bubbles.style.backgroundImage = "url('"+randompic()+"')";
        body.appendChild(bubbles);
        setTimeout(function(){
            bubbles.remove();
        },1000)      
  }
*{
    margin: 0;
    padding: 0;
}
body{
    background: rgb(73, 156, 145);
}
#a1{
    position: relative;
    top: 350px;
    left: 100px;
    width: 30px;
    height: 150px;
    border: 2px solid #fff;
    background: rgb(0, 0, 0);
    float: left;
    cursor: pointer;
    perspective: 600;
}
span{
    position: absolute;
    top: 120px;
    left: 60%;
    width: 50px;
    height: 50px;
    background: #000;
    animation: tweek 1s linear infinite;
    transform-origin: top;
    background-size: cover;
    pointer-events: none;
}
@keyframes tweek {
    0% {
      transform: rotate(90deg) translate(300px);
    }
  
    100% {
      transform: rotate(0deg) translate(250px);
      opacity: 0;
    }
  }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Document</title>
</head>
<body onkeydown="keypress(event)">
    <div id="a1" onclick="a1click()"></div>
    <script src="script.js"></script>
</body>
</html>


推荐阅读