以下の例では、リンク 2 は期待どおりに黒ではなく白で表示され、コンテナ タグでラップせずにリンク 2 の色をスタイルするにはどうすればよいですか?
.text a{
color:#FFF;
}
.black{
color:#000;
}
<div class="text">
<a href="#">Link 1</a>
<a href="#" class="black">Link 2</a>
</div>
以下の例では、リンク 2 は期待どおりに黒ではなく白で表示され、コンテナ タグでラップせずにリンク 2 の色をスタイルするにはどうすればよいですか?
.text a{
color:#FFF;
}
.black{
color:#000;
}
<div class="text">
<a href="#">Link 1</a>
<a href="#" class="black">Link 2</a>
</div>
2 番目のセレクターは、それをオーバーライドする最初のセレクターよりも具体的である必要があります。
.text a {
color:#FFF;
}
.text a.black {
color:#000;
}
<div class="text">
<a href="#">Link 1</a>
<a href="#" class="black">Link 2</a>
</div>
前のセレクターの方が特異度が高いので白く出ます。これの1つの解決策:
.black{
color:#000 !important;
}
ただし、使いすぎると複雑な問題が発生する可能性があります。一般に、最善の解決策は、セレクターが多すぎるのを避けることです。リンクのデフォルト スタイルを設定するセレクターを 1 つ用意し、クラスを使用して特定のリンクのみを変更します。例えば:
a {
color: #fff;
}
.black {
color: #000;
}
最初のセレクターはより具体的であるため、白になります。つまり、クラス「テキスト」を持つ要素でリンクを取得しますが、最後のセレクターはクラス「黒」を持つ要素を取得するだけです。
これは、次の 2 つの方法で解決できます。
.text a.black {
color:#000;
}
また
.black{
color:#000 !important;
}
「重要」は、クラス「黒」の要素に与えられる他のルールを上書きします。
これは、クラスではなくIDを使用してスタイルを黒に適用するだけの実用的なソリューションです:
.text a{
color:#FFF;
}
#black{
color:#000;
}
<div class="text">
<a href="#">Link 1</a>
<a href="#" id="black">Link 2</a>
</div>
他の人が述べたように、「a」タグの以前のセレクターは「黒」クラスよりも具体的であるため、白くなります。
ここには 2 つのオプションがあります。
具体的に:
.text a{
color:#FFF;
}
.text a.black {
color:#000;
}
<div class="text">
<a href="#">Link 1</a>
<a href="#" class="black">Link 2</a>
</div>
または、「!important」ルールを使用できます。
.text a{
color:#FFF;
}
.black{
color:#000!important;
}
<div class="text">
<a href="#">Link 1</a>
<a href="#" class="black">Link 2</a>
</div>
最初のアプローチを強くお勧めしますが、状況によっては、実際の問題がどこにあるのかを突き止めるまで、"!important" で簡単に修正できる場合があります。"!important" ルールを乱用しないでください。将来的に混乱するからです。信頼してください。
これがあなたの質問に答えることを願っています。良い一日を過ごしてください。
マイケル。