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;
}

できます。しかし、それはベストプラクティスではないようです。!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>
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 に答える