私は数か月間ウェブサイトで作業してきましたが、何かを編集しようとしているときは、多くの場合、次のように使用する必要が!important
あります。
div.myDiv {
width: 400px !important;
}
期待どおりに表示させるためです。これは悪い習慣ですか?または、!important
コマンドを使用しても問題ありませんか? これにより、さらに望ましくないことが発生する可能性はありますか?
私は数か月間ウェブサイトで作業してきましたが、何かを編集しようとしているときは、多くの場合、次のように使用する必要が!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」を持つ1つの一意のボタンを除いて。ルール全体(この場合は色とフォントサイズの両方)の重要性は、セレクターの特異性によって管理されます。
!important
ただし、セレクターレベルではなく、プロパティレベルで追加されます。たとえば、次のルールを使用した場合:
button.highlight {
color: blue !important;
font-size: 1.5em;
}
その場合、colorプロパティはfont-sizeよりも重要になります。button#buyNow
実際、フォントサイズ(通常のIDとクラスの特異性によって管理されます)とは対照的に、色はセレクターの色よりも重要です。
要素<button class="highlight" id="buyNow">
のフォントサイズは。です2em
が、色はblue
です。
これは2つのことを意味します:
!important
宣言を使用することです。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 上で訪れた REAL の Web サイトから取ったもので、残念ながら頻繁に目にします。
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 タグを削除する必要があることを思い出したでしょう。しかし、あなたは1つ忘れました..
そうです、白い背景に白いテキストが表示され、ユーザーがこの新しいスタイルを使用しようとすると、Web ページをまったく読むことができなくなります (それを維持していると仮定します)。
もちろん、テキストボックスが空なので、あなたはこれに気づきません。そして、あなたはそれがうまくいくと思います!(思い込みは開発者にとって最悪の敵であり、プライドと傲慢さですぐそこにあります)。
したがって、基本的なルールは、オリジナルの完全なCSS ルール セットに対してOVERRIDES を設計する場合にのみ !important を使用する必要があります。これは例外のためのものであり、そもそも css の自然な順序と意味を乱すものであることを忘れないでください。ほとんどの場合、これを使用する必要はまったくありません。
拡張機能などのツールが存在し、'userstyles.org' のようなスタイリッシュなサイトが存在する場合、!important タグを使用することでユーザーを遠ざけるリスクがあります。スタイリッシュはそれらを上書きしないことに注意してください。
スタイルで !important を使用する場合は、ユーザーがそのスタイルをオフにできるようにしてください (Web ブラウザーの内部の「オン/オフ」スイッチを使用するという意味ではありません)。そして念のため、デフォルトにしないでください。
広告の削除にスタイリッシュを使用する人はますます少なくなっているので、ここでは !important で広告を保護することは本当に問題ではないと思います。サイトをカスタマイズしようとしている人を困らせるだけです。
私にとって、使用!important
することは悪いCSSの習慣です。これは、プロパティが上から下に適用されるcssルールを適用する際の自然な流れを混乱させます。を使用!important
すると、プロパティは最新の重要な値を優先します。
goto
スクリプトでキーワードを使用するのと同じです。それは完全に合法ですが、それでも避けるのが最善です。
この質問には少し遅れていますが、「他のスタイルが適用されていても、無視してこれを使用してください」と言っています。これは javascript では not 演算子ですが、css では優先順位を示すだけの区切りトークンと呼ばれるため!
、( の) の前にあると少し混乱するかもしれません。!important
例を示します。
なし!important
:
.set-color{
color: blue;
}
.set-color{
color: red;
}
赤を出力
!important
on bottom 属性(同じの)
.set-color{
color: blue;
}
.set-color{
color: red !important;
}
赤を出力します(とにかく赤でした)
!important
on top 属性(の)
.set-color{
color: blue !important;
}
.set-color{
color: red;
}
青を出力します(赤を無視し、青を使用します)
既存のプロジェクトに取り組んでいるので、必要な場合を除いて、それを使用することはお勧めしません。ただし、それを避けて、できるだけ重要なものを使用しないようにしてください。
問題は、それらを多すぎると、一方が他方を誤って上書きする可能性があることです。あなたのコードもはるかに読みにくく、CSSで何かをするたびに重要なことを見つけようとするのは大変な苦痛なので、これを維持するためにあなたの後に来る人は誰でも彼/彼女の髪を引き裂くでしょう。
これを確認してください:http ://webdesign.about.com/od/css/f/blcssfaqimportn.htm
まあ、!important
wp-pluginsのデフォルトプロパティを上書きしたい場合は、「仕事をしなければならない」ことがあると思います。
私は今日それを使用しましたが、それが私の仕事を終える唯一の方法でした. 何かを行うには良い方法ではないかもしれませんが、それが唯一の方法である場合があります。
!important は要因です。これにより、オーバーライドされたものに対してコードが無駄になる可能性があります
!それは論理的ではないという意味ではありません。そのため、ここではそのコードの中でそれと当惑します。!important は、コンピューティングにおける大きな事故になることがよくあります。
たとえば、作成したいが、display: block;
すでに定義している場合display: none;
:
p {
display: none;
display: block !important /*Now overriden*/;
}
<p>Some Paragraph</p>
!important
は避けるのが最善のキーワードです. いつ使うか, 影響力のある時期かもしれません. このリンクをクリックしていつ使うかを確認してください.!important
, !重要なスタイルルール - CSS-Tricks
どうでもいい