代码之家  ›  专栏  ›  技术社区  ›  Travis J

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

css
  •  1
  • Travis J  · 技术社区  · 12 年前

    我被迫使用 !important 在css中。可能还有另一种方法可以做到这一点,但我之所以这么做,是因为我只想让一个已经样式化的类的特定子集具有不同的样式。jQuery的日期选择器就是这样。在日期选择器中,我将某些日子设置为具有不同的优先级颜色。最终结果是 td 保持 <a> 保存日期的获取类名

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

    但是,此更改会被覆盖,因为该锚点标记有一个更具体的规则,它上面有一个类。我不想用该类更改所有元素,只想覆盖其中的一小部分。所以,我决定使用 !重要的 在前面的定义中

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

    它有效。但这似乎并不是最好的做法。正在使用 !重要的 一般的黑客攻击,更具体地说,在这种情况下?

    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>
    
    2 回复  |  直到 11 年前
        1
  •  3
  •   Blender    12 年前

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

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

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

    唯一的原因 !important 不受欢迎的原因是它使未来添加到CSS中的内容可能令人沮丧。

        2
  •  2
  •   Giona    12 年前

    简短的回答:没有。

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

    从…起 W3C specs 以下为:

    作者和用户样式表都可能包含“!important” 声明,并且用户“!important”规则覆盖作者“!importance” 规则。此CSS功能通过提供 具有特殊要求的用户(大字体、颜色组合等), 等等)对呈现的控制。

    所以这绝对不是黑客攻击:-)