Erstens ist es, wie Sie sehen können, unterstrichen (< u >). Zweitens ist der gesamte Text rot. Nun, gibt es trotzdem den Text ($username) rot zu lassen, aber die Unterstreichung schwarz?
So können Sie jetzt Text in einer Farbe und eine Textdekoration unterstreichen – in einer anderen Farbe … ohne ein zusätzliches „Wrap“-Element zu benötigen
p {
text-decoration: underline;
-webkit-text-decoration-color: red; /* safari still uses vendor prefix */
text-decoration-color: red;
}
<p>black text with red underline in one element - no wrapper elements here!</p>
… also mit der text-decoration Kurzschrift – das obige Beispiel wäre einfach:
p {
text-decoration: underline red;
}
p {
text-decoration: underline red;
}
<p>black text with red underline in one element - no wrapper elements here!</p>
Das ist cool, aber neben der fehlenden Unterstützung – es ist auch schön, etwas mehr Kontrolle zu haben – die Sie jedoch mit Border-Bottom erreichen können – wird die Verwendung von Inline-Block auf langen Strecken sicherlich die Magie brechen … so wäre dies die beste Lösung dafür.
– Sheriffderek
2. Mai 14 um 18:26 Uhr
Es ist 2016 und es fehlt immer noch die Unterstützung in Chrome. Seufzen.
– Jason S
23. September 16 um 16:20 Uhr
Zwei Jahre später hat diese Eigenschaft immer noch praktisch keine Browserunterstützung. Bitte beachten Sie meine unten beschriebene Methode für einzeilige Unterstreichungen.
– Husky
11. Januar 17 um 13:42 Uhr
@JasonS – Chrome unterstützt dies jetzt vollständig 🙂
– Danield
22. März 17 um 9:19 Uhr
Husky
Update vom Autor:
Diese Antwort ist seitdem veraltet Text-Dekoration-Farbe wird jetzt von den meisten modernen Browsern unterstützt.
:pseudo+em
Um die Größe, Strichbreite und Positionierung des Originals genau zu replizieren text-decoration:underlineohne zusätzliches HTML-Markup einzuführensollten Sie a verwenden pseudo-element mit em Einheiten. Dies ermöglicht eine genaue Skalierung des Elements und natives Verhalten ohne zusätzliches Markup.
Durch die Verwendung von Anzeige:table-caption und caption-side auf dem Pseudo-Element und Display inline-tablekönnen wir den Browser zwingen, sowohl die Linie als auch den Link genau vertikal auszurichten, selbst wenn er skaliert ist.
In diesem Fall verwenden wir inline-table anstelle von inline-block, um die Anzeige des Pseudos zu erzwingen, ohne dass Höhen oder negative Werte angegeben werden müssen.
+1 für die Verwendung von Peudo-Elementen, die einen reinen CSS-Ansatz mit großer Kontrolle über die Eigenschaften der „Unterstreichung“ bieten
– CodeKröte
20. Mai ’15 um 12:52 Uhr
Tolle Lösung, aber ich kann das nur in Chrome gut aussehen lassen, soll es auch in anderen Browsern funktionieren? Im Firefox ist es komplett kaputt.
–Richard B
19. September 15 um 11:39 Uhr
@RichardB Ich habe die Antwort aktualisiert, um die zu verwenden caption-side -Eigenschaft, die diese Browser-Eigenheiten berücksichtigen sollte. Ich habe die Fiddle- und Codepen-Links aktualisiert.
– Husky
26. September 15 um 3:27 Uhr
Das Verhalten bei mehrzeiligem Text/Link ist nicht dasselbe wie bei Textdekoration. Dennoch ist es besser, ein weiteres Element/eine weitere Spanne zu verwenden.
– Jonas Krutil
26. März ’16 um 11:40 Uhr
Zusätzlich zu dem, was gesagt wurde, werden Unterstreichungen mit Unterlängen falsch wiedergegeben, z g.
– Jari Keinänen
21. März 18 um 10:05 Uhr
Nein. Das Beste, was Sie tun können, ist, a zu verwenden border-bottom mit einer anderen Farbe, aber das ist es nicht Ja wirklich unterstreichen.
Tatsächlich scheint dies zu funktionieren … stackoverflow.com/questions/12804419/…
– Derek Litz
12. Juli 13 um 21:21 Uhr
Das ist falsch; Siehe den Kommentar zu Textdekorationsfarbe unten.
Dies sollte nicht mehr die akzeptierte Antwort sein. Siehe die text-decoration: underline red; Antwort unten.
– Joshua Dance
12. März 20 um 3:21 Uhr
In der Praxis ist es möglich, wenn Sie verwenden span Element statt font:
<style>
u { color: black; }
.red { color: red }
</style>
<u><span class="red"><br>$username</span></u>
Sehen jsfiddle. Scheint auf Chrome, Safari, Firefox, IE, Opera zu funktionieren (getestet auf Win 7 mit den neuesten Versionen).
Der Code in der Frage sollte auch funktionieren, funktioniert aber aus irgendeinem Grund nicht in WebKit-Browsern (Chrome, Safari).
Bis zum CSS-Spezifikation: „Die für die Textdekoration erforderliche(n) Farbe(n) muss/müssen vom Eigenschaftswert ‘color’ des Elements abgeleitet werden, auf das ‘text-decoration’ gesetzt ist. Die Farbe von Dekorationen muss gleich bleiben, auch wenn untergeordnete Elemente unterschiedliche „Farbwerte“ haben.“
Sie können auch die Eigenschaft box-shadow verwenden, um eine Unterstreichung zu simulieren.
Hier ist ein Geige. Die Idee ist, zwei geschichtete Kastenschatten zu verwenden, um die Linie an der gleichen Stelle wie eine Unterstreichung zu positionieren.
Eine andere Möglichkeit als die von Danield beschriebene besteht darin, die Breite eines untergeordneten Containers inline anzuzeigen und die gewünschte Tipografiefarbe anzuzeigen. Das übergeordnete Element Breite die Textdekoration und die Farbe der gewünschten Unterstreichung. So was:
div{text-decoration:underline;color:#ff0000;display:inline-block;width:50px}
div span{color:#000;display:inline}
<div>
<span>Hover me, i can have many lines</span>
</div>
+1 Dies ist die moderne Version dessen, was Jukka in seiner Antwort beschrieben hat (as <u> ist veraltet).
– Jari Keinänen
21. März 18 um 10:09 Uhr
.
8209700cookie-checkFarbe der Unterstreichung ändernyes
Und damit die
<font>
Schild.– Fabian
28. August 13 um 19:34 Uhr
<u>
ist in HTML4 veraltet– Sheriffderek
2. Mai 14 um 18:27 Uhr