首頁 > web前端 > 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
原創
700 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板