通过JS更改CSS

时间:2019-02-19 23:59:43

标签: javascript html css

如何将 .btn-1 上的“背景图像” 更改为我在脚本? 我基本上想使用JS更改CSS .btn-1的3color渐变属性。

 <style>
    .btn {
      flex: 1 1 auto;
      margin: 10px;
      padding: 30px;
      text-align: center;
      text-transform: uppercase;
      transition: 0.5s;
      background-size: 200% auto;
      color: white;
     /* text-shadow: 0px 0px 10px rgba(0,0,0,0.2);*/
      box-shadow: 0 0 20px #eee;
      border-radius: 10px;
     }

    .btn:hover {
      background-position: right center; 
    }

    .btn-1 {
      background-image: linear-gradient(to right, #f6d365 0%, #fda085 51%, #f6d365 100%);
    }

    </style>
    <body>
    <div class="container">
    <script>
      var color = {background-image: linear-gradient(to right, color1 0%, color2 51%, color3 100%)}
    </script>
      <a name="button" class="btn btn-1">Button Text</a>
    </div>
    </body>

2 个答案:

答案 0 :(得分:3)

var color必须是一个字符串,使用document.querySelector选择所需的元素,然后使用element.backgroundImage = color

应用渐变

var color = 'linear - gradient(to right, color1 0 % , color2 51 % , color3 100 % )'

document.querySelector('.btn.btn-1').backgroundImage = color;
.btn {
  flex: 1 1 auto;
  margin: 10px;
  padding: 30px;
  text-align: center;
  text-transform: uppercase;
  transition: 0.5s;
  background-size: 200% auto;
  color: white;
  /* text-shadow: 0px 0px 10px rgba(0,0,0,0.2);*/
  box-shadow: 0 0 20px #eee;
  border-radius: 10px;
}

.btn:hover {
  background-position: right center;
}

.btn-1 {
  background-image: linear-gradient(to right, #f6d365 0%, #fda085 51%, #f6d365 100%);
}
<div class="container">
  <a name="button" class="btn btn-1">Button Text</a>
</div>

答案 1 :(得分:0)

我建议您为btn类添加一个修饰符类。修饰符类是BEM方法论的一部分,它是一种辅助类,用于更改元素的行为或外观。 Read more about BEM

添加修饰符类后,只需在需要时将其添加到元素中即可。

就代码清除和维护而言,此方法更好。如果您有任何问题,请告诉我。

简单示例:

.btn {
  flex: 1 1 auto;
  margin: 10px;
  padding: 30px;
  text-align: center;
  text-transform: uppercase;
  transition: 0.5s;
  background-size: 200% auto;
  color: white;
 /* text-shadow: 0px 0px 10px rgba(0,0,0,0.2);*/
  box-shadow: 0 0 20px #eee;
  border-radius: 10px;
}

.btn:hover {
  background-position: right center; 
}

.btn-1 {
 background-image: linear-gradient(to right, #f6d365 0%, #fda085 51%, #f6d365 100%);
}

.btn-1--extra {
  background-image: linear-gradient(to right, color1 0%, color2 51%, color3 100%);
}
<body>
  <div class="container">
    <a name="button" id="button" class="btn btn-1">Button Text</a>
  </div>
  <script>
    var button = document.getElementById("button");
    button.classList.add("btn-1--extra");
  </script>
</body>