!important は使用しませんし、使用すべきではありません。CSS の特異性と継承の原則に従って適切にオーバーライドする必要があるだけです。
CSS継承の説明
たとえば、「不要な」ボタンのスタイルが次のようなものであるとしましょう。
<input type="button" class="unwanted" />
そして、(編集不可の) スタイルシートに CSS があります:
.unwanted {
fooRule: whatever;
barRule: whatever;
}
継承を使用すると、独自の外部スタイルシートを作成するだけで済みます。覚えておくべきこと:
(1)「不要な」スタイルシート参照を含む既存のものの下に配置する必要があります。継承は、外部スタイルシートを順次処理します。これは、「最も近いルールが勝つ」という原則に従います。(2) CSS ルールを記述する方法は、現在不要なスタイルを適用しているルールよりも具体的でなければなりません。繰り返しますが、上記のリンクはこれを説明するのに本当に役立ちます。
前の例に戻ると、不要なスタイルは単に「不要な」クラスによって適用されています。HTML を編集せずにルールをオーバーライドできます。あるいは、HTML を編集することもできます。それはあなた次第です。また、ボタンのスタイルにどの程度グローバルに影響を与えたいかによっても異なります。
「不要な」クラスを持つすべてのボタンにグローバルに影響を与えたい場合は、次のようにします。
input[type='button'] .unwanted {
fooRule:override;
}
不要なスタイルを持つボタンの一部のみを変更したい場合は、代わりに次のようにします。
.unwanted.newRule {
fooRule:override;
}
次に、HTML を次のように変更します。
<input type="button" class="unwanted newRule">
.unwanted.newRule は、不要と newRule の両方のクラスを持つ「要素」にのみ影響することを意味することに注意してください。不要なスタイルが次のように設定されている場合、何も変更されません。
<form class="unwanted">
<input type="button" class="newRule" />
</form>
.unwanted.newRule である理由は、「両方のクラスが同じ要素にある」ことを意味します。次のように変更します。
.unwanted .newRule {foo}
つまり、私のポイントは、CSS の特異性と継承を正しく利用し、!important を使用せずにやりたいことを実行する、意味的に正しい方法がたくさんあるということです。
補足として、!important を使用する必要がある唯一の理由は、HTML 要素に 'style' 属性を書き込む JavaScript を使用して実際にボタンをスタイリングする CSS が適用されている場合です。その場合、(1) その JS を使用しないでください。これは、JS を使用してスタイリングするための恐ろしい方法です。(2) !important を使用して、JS によって適用されるインライン スタイルをオーバーライドする必要があります。繰り返しますが、これはカスケードの仕組みによるものです。この場合、CSS は (1) ブラウザー (ユーザー エージェント)、(2) 外部 CSS、(3) 内部「ヘッド」CSS、(4) 内部インライン CSS、 (5) 作成者の !important 宣言、(6) ユーザーの !important 宣言。