是css属性!重要的是黑客?

时间:2012-09-25 19:47:00

标签: css

我被迫在css中使用!important。可能有另一种方法可以完成这项工作,但我这样做是因为我只希望已经风格化的类的特定子集具有不同的样式。情况是jQuery的datepicker。在datepicker中,我设置某些天具有不同的优先级颜色。最终结果是持有日期的td的{​​{1}}元素获得了类名

<a>

但是,这个更改会被覆盖,因为该锚标记有一个更具体的规则,它特别有一个类。我不想更改该类的所有元素,只是覆盖其中的一些元素。所以,我决定在之前的定义中使用.date-priority > a { background: url("") red; border: 1px solid yellow; }

!important

有效。但它似乎并不是最佳做法。一般是使用.date-priority > a { background: url("") red !important; border: 1px solid yellow !important; } 黑客,更具体地说是在这种情况下?

HTML:

!important

2 个答案:

答案 0 :(得分:3)

如果是这种情况,只需为这些元素添加单独的规则:

.date-priority > a,.date-priority > a.className {
 background: url("") red;
 border: 1px solid yellow;
}

演示:http://jsfiddle.net/Blender/rCyjV/

!important不赞成的唯一原因是因为它使CSS的未来添加可能令人沮丧。

答案 1 :(得分:2)

简短的回答:没有。

长答案:!important专门用于您不希望连续声明覆盖规则的情况。此外,分配给选择器的“权重”(最具体的=最重要的)并不总是开发人员想要的行为。

来自W3C specs

  

作者和用户样式表都可能包含“!important”   声明和用户“!important”规则覆盖作者“!important”   规则。此CSS功能通过提供改进了文档的可访问性   有特殊要求的用户(大字体,颜色组合,   等)控制演示。

所以肯定不是黑客: - )