Saya harus menonaktifkan perubahan warna tag jangkar saat dikunjungi. Saya melakukan ini:
a:visited{ color: gray }
(Tautan berwarna abu-abu sebelum dikunjungi.) Tetapi ini adalah cara di mana saya secara eksplisit menyatakan warna setelah tautan dikunjungi, yang sekali lagi merupakan perubahan warna.
Bagaimana saya bisa menonaktifkan perubahan warna dari sebuah tag anchor ketika dikunjungi tanpa melakukan perubahan warna yang eksplisit?
a
menjadia:link
?a:link
dana
yang tidak sama. Jangkar tidak harus berupa tautan. Biasanya berubah warna hanya jika mengandung tautan.Jika Anda hanya ingin warna jangkar tetap sama dengan elemen induk jangkar, Anda dapat memanfaatkan warisan:
a, a:visited, a:hover, a:active { color: inherit; }
Perhatikan bahwa tidak perlu mengulangi aturan untuk setiap pemilih; cukup gunakan daftar pemilih yang dipisahkan koma (urutan penting untuk elemen semu jangkar). Selain itu, Anda dapat menerapkan pemilih semu ke kelas jika Anda ingin menonaktifkan warna jangkar khusus secara selektif:
.special-link, .special-link:visited, .special-link:hover, .special-link:active { color: inherit; }
Pertanyaan Anda hanya menanyakan tentang negara bagian yang dikunjungi, tetapi saya berasumsi yang Anda maksud adalah semua negara bagian. Anda dapat menghapus pemilih lain jika Anda ingin mengizinkan perubahan warna pada semua kecuali yang dikunjungi.
sumber
a:link
menjadi link warna default (biasanya biru) dan memilikia:visited
mewarisi dari itu, tanpa hard-coding "biru" di mana saja?Untuk
:hover
menimpa:visited
, dan memastikan:visited
sama dengan warna awal,:hover
harus muncul setelahnya:visited
.Jadi jika ingin menonaktifkan perubahan warna,
a:visited
harus datang sebelumnyaa:hover
. Seperti ini:a { color: gray; } a:visited { color: orange; } a:hover { color: red; }
Untuk menonaktifkan
:visited
perubahan, Anda akan memberinya gaya dengan kelas non-pseudo:a, a:visited { color: gray; } a:hover { color: red; }
sumber
a:link
,a:visited
2)a:hover
3)a:active
Hapus selektor atau setel ke warna yang sama seperti teks Anda muncul secara normal.
sumber
Jika Anda menggunakan beberapa pra-prosesor seperti SASS, Anda dapat menggunakan
@extend
fitur:a:visited { @extend a; }
Akibatnya, Anda akan melihat
a:visited
selektor yang ditambahkan secara otomatis untuk setiap gaya dengana
selektor, jadi berhati-hatilah dengannya, karena tabel gaya Anda mungkin bertambah besar ukurannya.Sebagai kompromi, Anda dapat menambahkan @extend hanya di blok yang benar-benar Anda butuhkan.
sumber
Anda dapat mengatasi masalah ini dengan menelepon
a:link
dana:visited
menyeleksi bersama. Dan ikuti dengana:hover
selektor.a:link, a:visited {color: gray;} a:hover {color: skyblue;}
sumber
Saya pikir jika saya menetapkan warna untuk
a:visited
itu tidak baik: Anda harus tahu warna default dari taga
dan setiap kali menyinkronkannyaa:visited
.Saya tidak ingin tahu tentang warna default (dapat disetel dalam
common.css
aplikasi Anda, atau Anda dapat menggunakan gaya luar).Saya pikir itu solusi yang bagus:
HTML
:<body> <a class="absolute">Test of URL</a> <a class="unvisited absolute" target="_blank" href="google.ru">Test of URL</a> </body>
CSS
:.absolute{ position: absolute; } a.unvisited, a.unvisited:visited, a.unvisited:active{ text-decoration: none; color: transparent; }
sumber
a { color: orange !important; }
!important
memiliki efek bahwa properti yang dipermasalahkan tidak dapat diganti kecuali yang lain!important
digunakan. Ini umumnya dianggap praktik yang buruk untuk digunakan!important
kecuali benar-benar diperlukan; namun, saya tidak dapat memikirkan cara lain untuk 'menonaktifkan':visited
hanya menggunakan CSS.sumber
Menggunakan:
a:visited { text-decoration: none; }
Tapi itu hanya akan mempengaruhi link yang belum diklik.
sumber