【问题标题】:How to make sure color is overwritten on hover?如何确保悬停时覆盖颜色?
【发布时间】:2013-01-20 10:20:58
【问题描述】:

HTML:

<div class="hovertest" style="background-color: #fff">
    Test 1
</div>
<div class="hovertest" style="background-color: #eee">
    Test 2
</div>

CSS:

.hovertest:hover {
     background-color: #000;
}

由于内联颜色样式的更高特异性,悬停颜色不会被应用。如果我给 div 一个 ID 并在 ID 样式中应用它们各自的颜色,也会出现同样的问题。我想在两个 div(或更多)之间共享悬停颜色定义,同时在非悬停时显示它们的独特颜色。如果没有大量多余的 css,这可能吗?

【问题讨论】:

  • CSS 代码中使用 !importantbackground-color:#000 !important;

标签: css hover css-selectors css-specificity


【解决方案1】:

您可以通过在值后设置!important 来胜过CSS 中其他声明的任何特殊性。只有使用 !important 的另一个声明才能覆盖它。

.hovertest:hover {
    background-color: black !important;
}

#hovertest:hover {
    background-color: red; /* Even using an ID won't override `!important` */
}

但要小心! 在 CSS 中使用 !important 可能会导致一些非常棘手的问题。以尽可能避免使用 CSS 的方式编写 CSS 通常更有用。

不要使用!importantreactive,使用它预防性

【讨论】:

  • 太棒了!是的,我想避免使用任何自定义代码来删除背景颜色(因为当鼠标不再悬停时我必须将其添加回来)。我从来没有发现 !important 的实际用途是有意义的,所以谢谢你的例子。我会记住这条规则的。
  • 有时最好编写更多代码而不是使用!important 来“偷偷摸摸”解决这个问题。大多数时候,我过去尝试使用重要的样式都会导致更多问题。当您遇到新问题时,请记住这一点。 ;)
猜你喜欢
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多