ホームページ > ウェブフロントエンド > CSSチュートリアル > 私の `.foo a:link` および `.foo a:visited` CSS が `a:hover` および `a:active` をオーバーライドするのはなぜですか?

私の `.foo a:link` および `.foo a:visited` CSS が `a:hover` および `a:active` をオーバーライドするのはなぜですか?

Susan Sarandon
リリース: 2024-11-28 14:03:12
オリジナル
679 人が閲覧しました

Why Does My `.foo a:link` and `.foo a:visited` CSS Override `a:hover` and `a:active`?

CSS の .foo a:link、.foo a:visited セレクターが a:hover、a:active セレクターをオーバーライドするのはなぜですか?

質問で説明されている予期しない動作は、CSS の特異性ルールから発生します。特異性は、複数のルールが同じ要素に適用される場合の CSS ルールの優先順位を決定します。

特異性テーブル:

Selector Specificity
a:link 0-0-1-1
a:visited 0-0-1-1
a:hover 0-0-1-1
a:active 0-0-1-1
.foo a:link 0-0-2-1
.foo a:visited 0-0-2-1

ご覧のとおり、 .foo a:linkおよび .foo a:visited は、追加のクラス セレクターにより、a:hover および a:active よりもわずかに高い特異性を持ちます。 .foo.

特異性オーバーライドの仕組み:

異なる特異性を持つ複数のルールが同じ要素に適用される場合、より高い特異性を持つルールが優先されます。この場合、 .foo a:link および .foo a:visited は a:hover および a:active よりも高い特異性を持っているため、それらのスタイルは後者のスタイルをオーバーライドします。

動作の修正:

.foo a:link、.foo a:visited セレクターがオーバーライドされないようにするにはa:hover、a:active、後者の特異性を高めることができます。これは、ホバー/アクティブ ルールに子セレクターを追加することで実現できます。

.foo a:hover, .foo a:active {
  color: red;
}
ログイン後にコピー

.foo クラスを子セレクターとして追加すると、ホバー/アクティブ ルールの特異性が 0-0- に増加します。 3-1 であり、.foo a:link および .foo a:visited よりも高くなります。その結果、両方の疑似クラスが適用される場合、ホバー/アクティブ スタイルが優先され、リンク/訪問済みスタイルよりも有効になります。

以上が私の `.foo a:link` および `.foo a:visited` CSS が `a:hover` および `a:active` をオーバーライドするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート