Ich habe eine Reihe von gestalteten Links, mit denen :before
ein Pfeil angewendet wird.
Es sieht in allen Browsern gut aus, aber wenn ich die Unterstreichung auf den Link anwende, möchte ich keine Unterstreichung auf dem :before
Teil (dem Pfeil) haben.
Siehe jsfiddle zum Beispiel: http://jsfiddle.net/r42e5/1/
Ist es möglich, dies zu entfernen? Der Teststil, mit dem ich gesessen #test p a:hover:before
habe, wird zwar angewendet (laut Firebug), aber die Unterstreichung ist immer noch da.
Wie kann man das vermeiden?
#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
quelle
quelle
Antworten:
Ja, wenn Sie den Anzeigestil des Inline-Elements von
display:inline
(Standardeinstellung) in Folgendes änderndisplay:inline-block
:Dies liegt daran, dass in den CSS-Spezifikationen Folgendes angegeben ist :
(Hervorhebung von mir.)
Demo: http://jsfiddle.net/r42e5/10/
Vielen Dank an @Oriol für die Bereitstellung der Problemumgehung, die mich dazu veranlasst hat, die technischen Daten zu überprüfen und festzustellen, ob die Problemumgehung legal ist.
quelle
text-decoration:underline
auf ein übergeordnetes Element angewendetes Element mit überschreibendisplay:inline-block
. Siehe ein Beispiel: jsfiddle.net/aZdhN/1 . Dann kann das Problem des Fragestellers wie folgtEs gibt einen Fehler in IE8-11 , daher funktioniert die
display:inline-block;
alleinige Verwendung dort nicht.Ich habe eine Lösung für diesen Fehler gefunden, indem ich explizit den Wert
text-decoration:underline;
: before-content festgelegt und diese Regel dann erneut mit überschrieben habetext-decoration:none;
Arbeitsbeispiel hier: http://jsfiddle.net/95C2M/
Update: Da jsfiddle nicht mehr mit IE8 funktioniert, fügen Sie diesen einfachen Demo-Code einfach in eine lokale HTML-Datei ein und öffnen Sie ihn in IE8:
quelle
<img style="text-decoration:underline">
innen ausgeschaltet werden (und hier war der Schlüssel)<a style="padding:0; border:none;">
Sie können dem
:before
Element Folgendes hinzufügen :Mit
display: inline-block
der Unterstreichung verschwindet. Das Problem ist jedoch, dass der Raum nach dem Dreieck zusammenbricht und nicht angezeigt wird. Um dies zu beheben, können Siewhite-space: pre-wrap
oder verwendenwhite-space: pre
.Demo : http://jsfiddle.net/r42e5/9/
quelle
pre-wrap
Hinweis. Ich benutztecontent:'►\a0'
(\ a0 = & nbsp;)Wickeln Sie Ihre Links in Bereiche ein und fügen Sie die Textdekoration dem Bereich auf dem a: Schwebeflug wie folgt hinzu:
Ich habe Ihre Geige auf das aktualisiert, was Sie meiner Meinung nach versuchen zu tun. http://jsfiddle.net/r42e5/4/
quelle
Versuchen Sie stattdessen:
wird das reichen?
quelle
benutze das
quelle