【问题标题】:Using an array to select a random css class from list使用数组从列表中选择一个随机的 CSS 类
【发布时间】:2022-01-21 03:04:32
【问题描述】:

我正在尝试从列表中随机选择一个 CSS 类。

这是错误的,我不知道如何让它工作。 https://jsfiddle.net/Lke2dpv1/

我怎么能做到这一点?

我认为我的想法是正确的,只是写的方式不对。

这就是我想要做的。

这里是类数组:const colors = ['.play1', '.play2', '.play3'];

然后会从列表中随机选择一个。

(function randomBackground() {
  const colors = ['.play1', '.play2', '.play3'];
  const ran = colors[Math.floor(Math.random() * colors.length)];
  document.querySelector('body').classList.add('play' + ran)
}());
.play1 {
  --color-a: orange;
  --color-b: black;
  --color-c: green;
  --color-d: black;
}

.play2 {
  --color-a: purple;
  --color-b: black;
  --color-c: purple;
  --color-d: black;
}

.play3 {
  --color-a: green;
  --color-b: black;
  --color-c: green;
  --color-d: black;
}

html,
body {
  height: 100%;
  padding: 0;
  margin: 0;
}


body  {
  background-size: 165px 165px;
  background-image:
    linear-gradient(var(--color-a) 5px, #0000 5px),
    linear-gradient(90deg, var(--color-a) 5px, #0000 5px),

    linear-gradient(var(--color-b) 10px, #0000 10px 160px, var(--color-b) 160px),
    linear-gradient(90deg, var(--color-b) 10px, #0000 10px 160px, var(--color-b) 160px),

    linear-gradient(var(--color-c) 15px, #0000 15px 155px, var(--color-c) 155px),
    linear-gradient(90deg, var(--color-c) 15px, #0000 15px 155px, var(--color-c) 155px),

    linear-gradient(var(--color-d) 20px, #0000 20px 150px, var(--color-d) 150px),
    linear-gradient(90deg, var(--color-d) 20px, #0000 20px 150px, var(--color-d) 150px),

    linear-gradient(var(--color-a) 25px, #0000 25px 145px, var(--color-a) 145px),
    linear-gradient(90deg, var(--color-a) 25px, #0000 25px 145px, var(--color-a) 145px),

    linear-gradient(var(--color-b) 30px, #0000 30px 140px, var(--color-b) 140px),
    linear-gradient(90deg, var(--color-b) 30px, #0000 30px 140px, var(--color-b) 140px),

    linear-gradient(var(--color-c) 35px, #0000 35px 135px, var(--color-c) 135px),
    linear-gradient(90deg, var(--color-c) 35px, #0000 35px 135px, var(--color-c) 135px),

    linear-gradient(var(--color-d) 40px, #0000 40px 130px, var(--color-d) 130px),
    linear-gradient(90deg, var(--color-d) 40px, #0000 40px 130px, var(--color-d) 130px),

    linear-gradient(var(--color-a) 45px, #0000 45px 125px, var(--color-a) 125px),
    linear-gradient(90deg, var(--color-a) 45px, #0000 45px 125px, var(--color-a) 125px),

    linear-gradient(var(--color-b) 50px, #0000 50px 120px, var(--color-b) 120px),
    linear-gradient(90deg, var(--color-b) 50px, #0000 50px 120px, var(--color-b) 120px),

    linear-gradient(var(--color-c) 55px, #0000 55px 115px, var(--color-c) 115px),
    linear-gradient(90deg, var(--color-c) 55px, #0000 55px 115px, var(--color-c) 115px),

    linear-gradient(var(--color-d) 60px, #0000 60px 110px, var(--color-d) 110px),
    linear-gradient(90deg, var(--color-d) 60px, #0000 60px 110px, var(--color-d) 110px),

    linear-gradient(var(--color-a) 65px, #0000 65px 105px, var(--color-a) 105px),
    linear-gradient(90deg, var(--color-a) 65px, #0000 65px 105px, var(--color-a) 105px),

    linear-gradient(var(--color-b) 70px, #0000 70px 100px, var(--color-b) 100px),
    linear-gradient(90deg, var(--color-b)70px, #0000 70px 100px, var(--color-b) 100px),

    linear-gradient(var(--color-c) 75px, #0000 75px 95px, var(--color-c) 95px),
    linear-gradient(90deg, var(--color-c) 75px, #0000 75px 95px, var(--color-c) 95px),

    linear-gradient(var(--color-d) 80px, #0000 80px 90px, var(--color-d) 90px),
    linear-gradient(90deg, var(--color-d) 80px, #0000 80px 90px, var(--color-d) 90px),

    linear-gradient(var(--color-a), var(--color-a));
}

【问题讨论】:

    标签: javascript css random


    【解决方案1】:

    从类名中删除 . 并使用此代码。

    (function randomBackground() {
      const colors = ['play1', 'play2', 'play3'];
      var random = Math.floor(Math.random() * colors.length);
      document.querySelector('body').classList.add(colors[random])
    }());
    .play1 {
      --color-a: orange;
      --color-b: black;
      --color-c: green;
      --color-d: black;
    }
    
    .play2 {
      --color-a: purple;
      --color-b: black;
      --color-c: purple;
      --color-d: black;
    }
    
    .play3 {
      --color-a: green;
      --color-b: black;
      --color-c: green;
      --color-d: black;
    }
    
    html,
    body {
      height: 100%;
      padding: 0;
      margin: 0;
    }
    
    
    body  {
      background-size: 165px 165px;
      background-image:
        linear-gradient(var(--color-a) 5px, #0000 5px),
        linear-gradient(90deg, var(--color-a) 5px, #0000 5px),
    
        linear-gradient(var(--color-b) 10px, #0000 10px 160px, var(--color-b) 160px),
        linear-gradient(90deg, var(--color-b) 10px, #0000 10px 160px, var(--color-b) 160px),
    
        linear-gradient(var(--color-c) 15px, #0000 15px 155px, var(--color-c) 155px),
        linear-gradient(90deg, var(--color-c) 15px, #0000 15px 155px, var(--color-c) 155px),
    
        linear-gradient(var(--color-d) 20px, #0000 20px 150px, var(--color-d) 150px),
        linear-gradient(90deg, var(--color-d) 20px, #0000 20px 150px, var(--color-d) 150px),
    
        linear-gradient(var(--color-a) 25px, #0000 25px 145px, var(--color-a) 145px),
        linear-gradient(90deg, var(--color-a) 25px, #0000 25px 145px, var(--color-a) 145px),
    
        linear-gradient(var(--color-b) 30px, #0000 30px 140px, var(--color-b) 140px),
        linear-gradient(90deg, var(--color-b) 30px, #0000 30px 140px, var(--color-b) 140px),
    
        linear-gradient(var(--color-c) 35px, #0000 35px 135px, var(--color-c) 135px),
        linear-gradient(90deg, var(--color-c) 35px, #0000 35px 135px, var(--color-c) 135px),
    
        linear-gradient(var(--color-d) 40px, #0000 40px 130px, var(--color-d) 130px),
        linear-gradient(90deg, var(--color-d) 40px, #0000 40px 130px, var(--color-d) 130px),
    
        linear-gradient(var(--color-a) 45px, #0000 45px 125px, var(--color-a) 125px),
        linear-gradient(90deg, var(--color-a) 45px, #0000 45px 125px, var(--color-a) 125px),
    
        linear-gradient(var(--color-b) 50px, #0000 50px 120px, var(--color-b) 120px),
        linear-gradient(90deg, var(--color-b) 50px, #0000 50px 120px, var(--color-b) 120px),
    
        linear-gradient(var(--color-c) 55px, #0000 55px 115px, var(--color-c) 115px),
        linear-gradient(90deg, var(--color-c) 55px, #0000 55px 115px, var(--color-c) 115px),
    
        linear-gradient(var(--color-d) 60px, #0000 60px 110px, var(--color-d) 110px),
        linear-gradient(90deg, var(--color-d) 60px, #0000 60px 110px, var(--color-d) 110px),
    
        linear-gradient(var(--color-a) 65px, #0000 65px 105px, var(--color-a) 105px),
        linear-gradient(90deg, var(--color-a) 65px, #0000 65px 105px, var(--color-a) 105px),
    
        linear-gradient(var(--color-b) 70px, #0000 70px 100px, var(--color-b) 100px),
        linear-gradient(90deg, var(--color-b)70px, #0000 70px 100px, var(--color-b) 100px),
    
        linear-gradient(var(--color-c) 75px, #0000 75px 95px, var(--color-c) 95px),
        linear-gradient(90deg, var(--color-c) 75px, #0000 75px 95px, var(--color-c) 95px),
    
        linear-gradient(var(--color-d) 80px, #0000 80px 90px, var(--color-d) 90px),
        linear-gradient(90deg, var(--color-d) 80px, #0000 80px 90px, var(--color-d) 90px),
    
        linear-gradient(var(--color-a), var(--color-a));
    }

    【讨论】:

      【解决方案2】:

      改变

      const colors = ['.play1', '.play2', '.play3'];

      收件人:

      const colors = ['1', '2', '3']; const colors = [1, 2, 3];(字符串或数字根据您的需要)

      如果你有这样的颜色数组

      const colors = ['.play1', '.play2', '.play3'];

      并将其添加到类列表中,例如 document.querySelector('body').classList.add('play' + ran),

      那么它将导致类名为 play.play1, play.play2, play.play3 在这种情况下是无效的。

      注意:在添加类列表时不要添加点(.)。

      修改片段:

      (function randomBackground() {
        const colors = ['1', '2', '3'];
        const ran = colors[Math.floor(Math.random() * colors.length)];
        document.querySelector('body').classList.add('play' + ran)
      }());
      .play1 {
        --color-a: orange;
        --color-b: black;
        --color-c: green;
        --color-d: black;
      }
      
      .play2 {
        --color-a: purple;
        --color-b: black;
        --color-c: purple;
        --color-d: black;
      }
      
      .play3 {
        --color-a: green;
        --color-b: black;
        --color-c: green;
        --color-d: black;
      }
      
      html,
      body {
        height: 100%;
        padding: 0;
        margin: 0;
      }
      
      
      body  {
        background-size: 165px 165px;
        background-image:
          linear-gradient(var(--color-a) 5px, #0000 5px),
          linear-gradient(90deg, var(--color-a) 5px, #0000 5px),
      
          linear-gradient(var(--color-b) 10px, #0000 10px 160px, var(--color-b) 160px),
          linear-gradient(90deg, var(--color-b) 10px, #0000 10px 160px, var(--color-b) 160px),
      
          linear-gradient(var(--color-c) 15px, #0000 15px 155px, var(--color-c) 155px),
          linear-gradient(90deg, var(--color-c) 15px, #0000 15px 155px, var(--color-c) 155px),
      
          linear-gradient(var(--color-d) 20px, #0000 20px 150px, var(--color-d) 150px),
          linear-gradient(90deg, var(--color-d) 20px, #0000 20px 150px, var(--color-d) 150px),
      
          linear-gradient(var(--color-a) 25px, #0000 25px 145px, var(--color-a) 145px),
          linear-gradient(90deg, var(--color-a) 25px, #0000 25px 145px, var(--color-a) 145px),
      
          linear-gradient(var(--color-b) 30px, #0000 30px 140px, var(--color-b) 140px),
          linear-gradient(90deg, var(--color-b) 30px, #0000 30px 140px, var(--color-b) 140px),
      
          linear-gradient(var(--color-c) 35px, #0000 35px 135px, var(--color-c) 135px),
          linear-gradient(90deg, var(--color-c) 35px, #0000 35px 135px, var(--color-c) 135px),
      
          linear-gradient(var(--color-d) 40px, #0000 40px 130px, var(--color-d) 130px),
          linear-gradient(90deg, var(--color-d) 40px, #0000 40px 130px, var(--color-d) 130px),
      
          linear-gradient(var(--color-a) 45px, #0000 45px 125px, var(--color-a) 125px),
          linear-gradient(90deg, var(--color-a) 45px, #0000 45px 125px, var(--color-a) 125px),
      
          linear-gradient(var(--color-b) 50px, #0000 50px 120px, var(--color-b) 120px),
          linear-gradient(90deg, var(--color-b) 50px, #0000 50px 120px, var(--color-b) 120px),
      
          linear-gradient(var(--color-c) 55px, #0000 55px 115px, var(--color-c) 115px),
          linear-gradient(90deg, var(--color-c) 55px, #0000 55px 115px, var(--color-c) 115px),
      
          linear-gradient(var(--color-d) 60px, #0000 60px 110px, var(--color-d) 110px),
          linear-gradient(90deg, var(--color-d) 60px, #0000 60px 110px, var(--color-d) 110px),
      
          linear-gradient(var(--color-a) 65px, #0000 65px 105px, var(--color-a) 105px),
          linear-gradient(90deg, var(--color-a) 65px, #0000 65px 105px, var(--color-a) 105px),
      
          linear-gradient(var(--color-b) 70px, #0000 70px 100px, var(--color-b) 100px),
          linear-gradient(90deg, var(--color-b)70px, #0000 70px 100px, var(--color-b) 100px),
      
          linear-gradient(var(--color-c) 75px, #0000 75px 95px, var(--color-c) 95px),
          linear-gradient(90deg, var(--color-c) 75px, #0000 75px 95px, var(--color-c) 95px),
      
          linear-gradient(var(--color-d) 80px, #0000 80px 90px, var(--color-d) 90px),
          linear-gradient(90deg, var(--color-d) 80px, #0000 80px 90px, var(--color-d) 90px),
      
          linear-gradient(var(--color-a), var(--color-a));
      }

      【讨论】:

        猜你喜欢
        • 2017-04-26
        • 1970-01-01
        • 2012-02-21
        • 1970-01-01
        • 2020-03-06
        • 2023-01-11
        • 1970-01-01
        • 1970-01-01
        • 2010-12-10
        相关资源
        最近更新 更多