Rumah >hujung hadapan web >tutorial css >Mengapa CSS `.foo a:link` dan `.foo a:visited` Saya Mengatasi `a:hover` dan `a:active`?

Mengapa CSS `.foo a:link` dan `.foo a:visited` Saya Mengatasi `a:hover` dan `a:active`?

Susan Sarandon
Susan Sarandonasal
2024-11-28 14:03:12679semak imbas

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

Mengapa .foo a:link, .foo a:visited Selector Mengatasi a:hover, a:active Selector dalam CSS?

Tingkah laku yang tidak dijangka yang diterangkan dalam soalan timbul daripada peraturan kekhususan CSS. Kekhususan menentukan keutamaan peraturan CSS apabila berbilang peraturan digunakan pada elemen yang sama.

Jadual Kekhususan:

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

Seperti yang anda lihat, .foo a:link dan .foo a:visited mempunyai kekhususan yang lebih tinggi sedikit daripada a:hover dan a:active kerana pemilih kelas tambahan .foo.

Cara Penggantian Kekhususan Berfungsi:

Apabila berbilang peraturan dengan kekhususan berbeza digunakan pada elemen yang sama, peraturan dengan kekhususan yang lebih tinggi diutamakan. Dalam kes ini, .foo a:link dan .foo a:visited mempunyai kekhususan yang lebih tinggi daripada a:hover dan a:active, jadi gaya mereka mengatasi gaya yang terakhir.

Membetulkan Tingkah Laku:

Untuk menghalang .foo a:link, .foo a:dilawati pemilih daripada mengatasi a:hover, a:aktif, anda boleh meningkatkan kekhususan yang terakhir. Ini boleh dicapai dengan menambahkan pemilih anak pada peraturan tuding/aktif:

.foo a:hover, .foo a:active {
  color: red;
}

Dengan menambahkan kelas .foo sebagai pemilih kanak-kanak, kekhususan peraturan tuding/aktif meningkat kepada 0-0- 3-1, yang lebih tinggi daripada .foo a:link dan .foo a:visited. Akibatnya, gaya tuding/aktif akan diutamakan dan berkuat kuasa ke atas pautan/gaya yang dilawati apabila kedua-dua kelas pseudo berkenaan.

Atas ialah kandungan terperinci Mengapa CSS `.foo a:link` dan `.foo a:visited` Saya Mengatasi `a:hover` dan `a:active`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn