私は数か月間ウェブサイトに取り組んでおり、何かを編集しようとすると何度も!important
を使用する必要がありますたとえば:
div.myDiv {
width: 400px !important;
}
期待どおりに表示するために。これは悪い習慣ですか?または、!important
コマンドを使用しても大丈夫ですか?これにより、さらに望ましくないものが発生する可能性がありますか?
はい、あなたの!important
の使用例は悪い習慣だと思います。そして、それは将来的に望ましくない効果を引き起こす可能性が非常に高いです。だからといって、決して大丈夫というわけではありません。
!important
の問題点:特異性 は、CSSがページにどのように影響するかをブラウザーが決定する際に働く主な力の1つです。セレクターが具体的であればあるほど、セレクターに重要度が追加されます。これは通常、選択した要素が発生する頻度と一致します。例えば:
button {
color: black;
}
button.highlight {
color: blue;
font-size: 1.5em;
}
button#buyNow {
color: green;
font-size: 2em;
}
このページでは、すべてのボタンは黒です。クラスが「ハイライト」のボタンは例外で、青です。 IDが「buyNow」の一意のボタン(緑色)を除きます。ルール全体の重要度(この場合は色とフォントサイズの両方)は、セレクターの特異性によって管理されます。
[SOME_CODE]ただし、セレクタレベルではなくプロパティレベルで追加されます。たとえば、このルールを使用した場合:
!important
その場合、colorプロパティはfont-sizeよりも重要度が高くなります。実際、色はbutton.highlight {
color: blue !important;
font-size: 1.5em;
}
セレクターの色よりも重要です。これは、font-size(通常のIDとクラスの特異性によって依然として管理されています)とは対照的です。
要素button#buyNow
のフォントサイズは<button class="highlight" id="buyNow">
ですが、色はblue
です。
これは2つのことを意味します。
2em
宣言を使用することです。たとえば、!important
セレクター。これにより、スタイルシートの保守とデバッグが非常に難しくなるだけでなく、Snowballエフェクトが開始されます。 1つのbutton#buyNow
が別の!important
を導き、それをオーバーライドし、さらに別の_をオーバーライドします。 1つだけではほとんどありません。 1つの!important
が便利な短期的な解決策である場合でも、長い目で見ればお尻を噛むように戻ってきます。
これは、最初に!important
が発明されたものです。ユーザーにWebサイトのスタイルをオーバーライドする手段を提供するためです。スクリーンリーダー、広告ブロッカーなどのアクセシビリティツールで多く使用されています。
一般的に、これはコードのにおいの場合だと思いますが、場合によっては選択肢がありません。開発者として、コードをできる限り制御することを目指してください。ただし、手を縛られて、存在するものを操作する必要がある場合があります。 !important
は慎重に使用してください。
多くのライブラリとフレームワークには、.hidden
、.error
、または.clearfix
などのユーティリティクラスが付属しています。それらは単一の目的を果たし、多くの場合、非常に少数ですが非常に重要なルールを適用します。 (たとえば、display: none
クラスの場合は.hidden
)。これらは、要素に現在ある他のスタイルを上書きし、あなたが私に尋ねた場合、!important
を確実に保証する必要があります。
!important
宣言の使用は、CSSのコアメカニズムの1つである特異性を損なう副作用があるため、しばしば悪い習慣と見なされます。多くの場合、これを使用すると、CSSアーキテクチャが不十分である可能性があります。
耐えられる、または好まれる場合もありますが、使用する前にそれらのケースの1つが実際に状況に当てはまることを再確認してください。
!important
は、ステートメントを常に適用し、次のことを実行します。
ほとんどの場合、!important
は回避できます。これは、セレクターの特異性がどれを有効にするかを処理するためです。これはカスケードスタイルの考え方です。ただし、特異性がそれほど論理的ではなく、ステートメントに!important
を強制しなければならない状況もあります(正確な状況を覚えていない場合があります)。
!important
を使用/回避しない理由
!important
とは何かを思い出すと読みにくくなりますこれについてもう一度触れておくことが重要だと思います。2014年の終わりに、より多くのルールがワーキングドラフトに追加されるので、ユーザーに制限を課さないことが非常に重要です。私は、このようなことが起こる可能性のあるシナリオを説明するために、この小さな例を書きました。これは、私がウェブ上で訪れた実際のウェブサイトから取られたものであり、残念ながら私はそれを頻繁に見ています。
Webサイトがあり、そのWebサイトはフォームの入力とテキストの編集に依存しています。目の疲れを最小限に抑えるために、誰もが大丈夫だと思うスタイルを選択してください。ユーザーは主に夜間にアクセスするため、背景色を白にし、テキストの色を黒にすることにします。デフォルトではフォームは空白なので、テキストを入力して(今回は)確実に機能するようにします。
...
background-color: black; /* I forgot important here, but it works fine on its own */
color: white !important;
...
数ヶ月後、ユーザーは黒地に白が目を痛めると不満を言うが、他の半分はそれを愛している、あなたはどうする?内部のスタイルをオーバーライドするために!importantを使用するカスタムテーマを追加して、両方の関係者が満足するようにします。これは、次の目的で使用されます。
...
background-color: white !important;
color: black !important;
...
さて、ここで何が起こりますか? 何を期待していましたか。最初のセットの!importantタグを適切に覚えていれば、それが機能しないことに気付き、おそらく!importantタグを削除する必要があることを覚えているでしょう。でも忘れてた.
右、白い背景に白いテキストが表示され、この新しいスタイルを使用しようとすると、ユーザーはWebページをまったく読むことができなくなります(これを維持した場合)。
もちろん、テキストボックスが空であるため、あなたはこれを理解していません。そして、あなたはそれが機能すると仮定します! (仮定は開発者にとって最悪の敵であり、誇りと慢さですぐそこにあります)。
したがって、基本ルールは、CSSルールの元のcompleteセットに対してOVERRIDESを設計するときにのみ!importantを使用する必要があります。それは例外のためのものであり、そもそもCSSの自然な秩序と意味を乱すことを忘れないでください。ほとんどの場合、まったく使用する必要はありません。
拡張機能などのツールが存在し、「userstyles.org」などのサイトが存在し、それに対応するスタイリッシュなツールであるため、!importantタグを使用することでユーザーを疎外する危険があります。スタイリッシュがそれらを無効にしないことに注意してください。
スタイルで!importantを使用する場合は、ユーザーがそのスタイルをオフにできるようにしてください(Webブラウザーの内部「オン/オフ」スイッチ経由では意味がありません)。そして、天国のためにしないでくださいそれをデフォルトにします。
人々はますますスタイリッシュな広告の削除を使用しなくなっているので、!importantで広告を保護することは本当に問題だとは思いません。それはあなたのサイトをカスタマイズしようとする誰かをいらいらさせるだけです。
この質問に少し遅れましたが、「他のスタイルが適用されていても無視して、このスタイルを使用してください」と言っています。 !
の(!important
の)_frontとは少し混乱するかもしれません。これは、javascriptではnot演算子ですが、cssでは優先トークンと呼ばれるデリミタトークンと呼ばれるためです。例を示します。
!important
なし:
.set-color{
color: blue;
}
.set-color{
color: red;
}
出力RED
!important
下部属性(同じ)
.set-color{
color: blue;
}
.set-color{
color: red !important;
}
出力RED(とにかく赤だったはずです)
!important
上の属性(同じ)
.set-color{
color: blue !important;
}
.set-color{
color: red;
}
出力BLUE(赤を無視、青を使用)
私にとって、!important
の使用はCSSの悪い習慣です。プロパティが上から下に適用されるCSSルールを適用する際の自然な流れを混乱させます。 !important
を使用すると、プロパティは最新の重要な値を優先するようになります。
スクリプトでgoto
キーワードを使用するのと同じです。完全に合法ですが、それでも回避するのが最善です。
既存のプロジェクトに取り組んでいるときに必要な場合を除き、使用することはお勧めしません。 しかし、それから離れて、できるだけ少ない重要なものを使用するようにしてください。
問題は、それらをあまりにも多く使用すると、一方が他方を誤って上書きしてしまう可能性があることです。あなたのコードははるかに読みにくいであり、これを維持するためにあなたの後に来る人は誰でも毎回! CSSで何かをするのは王室の痛みです。
これを確認してください: http://webdesign.about.com/od/css/f/blcssfaqimportn.htm
まあ、wp-pluginsのデフォルトのプロパティを上書きしたいなら、!important
を使うのはいつか「やらなければならない」と思う。
私は今日それを使用し、それが私の仕事を終える唯一の方法でした。たぶん何かをする良い方法ではありませんが、いつかそれをする唯一の方法です。
!important
の問題は、CSS
を使用する場合、すべての場合において、深い選択(優先度が高い)を避けなければならないことです。元のスタイルを変更せずにスタイルを変更すると、このスタイルを変更する自由が制限されます。彼は!important
もより深いセレクタで使用する必要があります。
!importantは要素であり、オーバーライドされる何かのためにコードを無駄にする可能性があります
!それは論理的ではないという意味ではなく、ここではそのコードの中でそれを混乱させる。 !importantは、しばしばコンピューティングの巨大な事故です。
たとえば、display: block;
にしたいが、すでにdisplay: none;
を定義している場合:
p {
display: none;
display: block !important /*Now overriden*/;
}
<p>Some Paragraph</p>
!important
は回避するのがベストなキーワードです。使用する場合は影響が出る可能性があります。このリンクをクリックして!important
を使用するタイミングを確認してください !ルール-CSS-Tricks
いいえ何