我如何重写元素的css属性?

3okqufwl  于 2023-01-18  发布在  其他
关注(0)|答案(2)|浏览(130)

我正在尝试通过添加一个新的CSS类来更改特定<li>元素的CSS属性。
我试过下面的jQuery代码,它是按照我想要的方式工作的。

$("li").click(function(event) {
  let active = event.target.id;
  // animation(event);
  if (active == "equal") {
    $("#" + active).css("background-color", 'hsl(6, 70%, 34%)');
  }

});
/* equals button */

ul:last-child li:last-child {
  margin: 0 4% 0 0;
  color: hsl(0, 0%, 100%);
  background-color: hsl(6, 63%, 50%);
  box-shadow: 0px 3px 0px 0px hsl(6, 70%, 34%);
}

.equalBtnAnimation {
  background-color: hsl(6, 70%, 34%);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class="buttons">
  <ul>
    <li id="seven">7</li>
    <li id="eight">8</li>
    <li id="nine">9</li>
    <li id="del">Del</li>
  </ul>
  <ul>
    <li id="four">4</li>
    <li id="five">5</li>
    <li id="six">6</li>
    <li id="add">+</li>
  </ul>
  <ul>
    <li id="one">1</li>
    <li id="two">2</li>
    <li id="three">3</li>
    <li id="sub">-</li>
  </ul>
  <ul>
    <li id="aps">.</li>
    <li id="zero">0</li>
    <li id="div">/</li>
    <li id="mul">x</li>
  </ul>
  <ul class="row">
    <li class="col-5" id="reset">Reset</li>
    <li class="col-5 equalBtnAnimation" id="equal">=</li>
  </ul>
</section>

我以为下面的类会覆盖css属性,但它没有。检查代码后,我看到了这一点:

以下是输出:

这是我从上面的jQuery代码中得到的预期输出:

相反,我想把它作为一个类来添加。如果有人能告诉我为什么上面的不起作用,那将是一个很大的帮助...

6l7fqoea

6l7fqoea1#

要获得更高的特异性,请将类添加到第一个选择器中。

ul:last-child li:last-child {
  margin: 0 4% 0 0;
  color: hsl(0, 0%, 100%);
  background-color: hsl(6, 63%, 50%);
  box-shadow: 0px 3px 0px 0px hsl(6, 70%, 34%);
}

ul:last-child li:last-child.equalBtnAnimation {
  background-color: hsl(6, 70%, 34%);
}
tktrz96b

tktrz96b2#

应用哪个CSS规则取决于选择器特异性https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
用途

ul:last-child li:last-child.myNewActiveClass {
  background-color: hsl(6, 70%, 34%);
}

或通过添加!important覆盖其他规则

.myNewActiveClass{
    background-color: hsl(6, 70%, 34%) !important;
}

然后在JS中:

$("#" + active).addClass("myNewActiveClass");

//or if you inisist to use element style 
$("#" + active).css("background-color", 'hsl(6, 70%, 34%) !important');

相关问题