Saya memiliki satu set tautan bergaya menggunakan :before
untuk menerapkan panah.
Ini terlihat bagus di semua browser, tetapi ketika saya menerapkan garis bawah ke tautan, saya tidak ingin ada garis bawah pada :before
bagian (panah).
Lihat jsfiddle misalnya: http://jsfiddle.net/r42e5/1/
Apakah mungkin untuk menghapus ini? Gaya uji coba yang saya ikuti #test p a:hover:before
memang diterapkan (menurut Firebug), tetapi garis bawahnya masih ada.
Adakah cara untuk menghindari ini?
#test {
color: #B2B2B2;
}
#test p a {
color: #B2B2B2;
text-decoration: none;
}
#test p a:hover {
text-decoration: underline;
}
#test p a:before {
color: #B2B2B2;
content: "► ";
text-decoration: none;
}
#test p a:hover:before {
text-decoration: none;
}
<div id="test">
<p><a href="#">A link</a></p>
<p><a href="#">Another link</a></p>
</div>
html
css
hyperlink
pseudo-element
text-decorations
OptimusCrime
sumber
sumber
Jawaban:
Ya, jika Anda mengubah gaya tampilan elemen sebaris dari
display:inline
(default) menjadidisplay:inline-block
:Ini karena spesifikasi CSS mengatakan :
(Penekanan milikku.)
Demo: http://jsfiddle.net/r42e5/10/
Terima kasih kepada @Oriol karena telah memberikan solusi yang mendorong saya untuk memeriksa spesifikasi dan memastikan bahwa solusi tersebut legal.
sumber
text-decoration:underline
diterapkan ke elemen induk dengandisplay:inline-block
. Lihat contoh: jsfiddle.net/aZdhN/1 . Kemudian, masalah penanya dapat diselesaikan seperti ini: stackoverflow.com/a/17347068/1529630Ada Bug di IE8-11 , jadi menggunakan
display:inline-block;
saja tidak akan berfungsi di sana.Saya telah menemukan solusi untuk bug ini, dengan menyetel secara eksplisit
text-decoration:underline;
untuk: before-content dan kemudian menimpa aturan ini lagi dengantext-decoration:none;
Contoh kerja di sini: http://jsfiddle.net/95C2M/
Pembaruan: Karena jsfiddle tidak lagi berfungsi dengan IE8, cukup tempelkan kode demo sederhana ini di file html lokal dan buka di IE8:
sumber
<img style="text-decoration:underline">
dalam (dan inilah kuncinya)<a style="padding:0; border:none;">
Anda dapat melakukannya dengan menambahkan yang berikut ke
:before
elemen:Dengan
display: inline-block
garis bawah menghilang. Tapi kemudian masalahnya adalah bahwa ruang setelah segitiga itu runtuh dan tidak ditampilkan. Untuk memperbaikinya, Anda dapat menggunakanwhite-space: pre-wrap
atauwhite-space: pre
.Demo : http://jsfiddle.net/r42e5/9/
sumber
pre-wrap
petunjuknya. Saya menggunakancontent:'►\a0'
(\ a0 = & nbsp;)Bungkus tautan Anda dalam bentang dan tambahkan dekorasi teks ke bentang di a: hover seperti ini,
Saya telah memperbarui biola Anda dengan apa yang menurut saya sedang Anda coba lakukan. http://jsfiddle.net/r42e5/4/
sumber
coba gunakan sebagai gantinya:
akankah itu berhasil?
sumber
Gunakan ini
sumber