1

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

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

但是,此更改会被覆盖,因为该锚标记有更具体的规则,它特别有一个类。我不想更改该类的所有元素,只想覆盖其中的一些。所以,我决定!important在之前的定义中使用

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

有用。但这似乎不是最佳实践。一般是在使用!importanthack,在这种情况下更具体吗?

HTML:

<td onclick="
 DP_jQuery_1348602012259.datepicker._selectDay('#date',8,2012, this);
 return false;" 
 title="Available" class=" ui-datepicker-week-end date-priority">
  <a href="#" class="ui-state-default">29</a>
</td>
4

2 回答 2

3

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

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

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

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

于 2012-09-25T19:53:45.353 回答
2

简短的回答:没有。

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

来自W3C 规范

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

所以绝对不是黑客:-)

于 2012-09-25T19:52:27.083 回答