Gibt es in CSS Möglichkeiten, Text mit unterschiedlichen Farben zu umreißen? Ich möchte einige Teile meines Textes hervorheben, um ihn intuitiver zu gestalten - wie Namen, Links usw. Das Ändern der Linkfarben usw. ist heutzutage üblich, daher möchte ich etwas Neues.
329
Antworten:
Es gibt eine experimentelle Webkit-Eigenschaft namens
text-stroke
CSS3. Ich habe versucht, diese Funktion für einige Zeit zum Laufen zu bringen, war aber bisher erfolglos.Was ich stattdessen getan habe, ist die bereits unterstützte
text-shadow
Eigenschaft (unterstützt in Chrome, Firefox, Opera und IE 9, glaube ich).Verwenden Sie vier Schatten, um einen gestrichenen Text zu simulieren:
Ich habe hier eine Demo für Sie gemacht
Ein schwebendes Beispiel finden Sie hier
Wie Jason C in den Kommentaren erwähnt hat, wird die
text-shadow
CSS-Eigenschaft jetzt von allen gängigen Browsern mit Ausnahme von Opera Mini unterstützt. Wo diese Lösung aus Gründen der Abwärtskompatibilität funktioniert (kein wirkliches Problem bei Browsern, die automatisch aktualisiert werden),text-stroke
sollte meines Erachtens das CSS verwendet werden.quelle
text-shadow
bis IE10. Seltsamerweise unterstützt IE9box-shadow
aber nichttext-shadow
.text-shadow
. Es scheint, dass es derzeit (3 Jahre nach Veröffentlichung dieser Antwort) von allen gängigen Browsern unterstützt wird, mit Ausnahme von Opera Mini, das "teilweise Unterstützung" anzeigt (es wird ignoriertblur-radius
).text-shadow: -1px 0 black, 0 1px black, 1px 0 black, 0 -1px black;
text-shadow
Unterstützung hin, nichttext-stroke
. Was derzeit nur vom Webkit unterstützt wird.Bearbeiten:
text-stroke
ist jetzt ziemlich ausgereift und in den meisten Browsern implementiert . Es ist einfacher, schärfer und präziser. Wenn Ihre Browser-Zielgruppe dies unterstützen kann, sollten Sie jetzttext-stroke
statttext-shadow
.Sie können und sollten dies nur mit dem
text-shadow
Effekt ohne Offsets tun :Warum? Wenn Sie mehrere Schatteneffekte versetzen, werden Sie unansehnliche, gezackte Ecken bemerken:
Wenn Sie Textschatteneffekte nur an einer Position verwenden, werden die Versätze beseitigt. Wenn Sie der Meinung sind, dass dies zu dünn ist und stattdessen einen dunkleren Umriss bevorzugen, ist dies kein Problem kann den gleichen Effekt mehrmals wiederholen (gleiche Position und Unschärfe beibehalten). Wie so:
Hier ist ein Beispiel von nur einem Effekt (oben) und dem gleichen Effekt, der 14 Mal wiederholt wurde (unten):
Beachten Sie auch: Da die Linien so dünn werden, ist es eine sehr gute Idee, das Rendern von Subpixeln mit zu deaktivieren
-webkit-font-smoothing: antialiased
.quelle
font-smoothing
Option, es hat die Ausgabe in Chrom stark verbessert!text-stroke
ist nicht dasselbe wie Gliederung übertext-shadow
.text-stroke
Es gibt keine Möglichkeit, den Umriss außerhalb des Textes erscheinen zu lassen, was bedeutet, dass der Umriss in den Text übergeht und ihn oft wirklich schrecklich aussieht. Mit anderen Worten, estext-stroke
ist kein Ersatztext-shadow
für UmrisseEinfach! SVG zur Rettung.
Dies ist eine vereinfachte Methode:
Hier ist eine komplexere Demo .
quelle
Sie können versuchen, mehrere verwischte Schatten zu stapeln, bis die Schatten wie ein Strich aussehen:
Hier ist eine Geige: http://jsfiddle.net/GGUYY/
Ich erwähne es nur für den Fall, dass jemand interessiert ist, obwohl ich es nicht als Lösung bezeichnen würde, weil es auf verschiedene Weise fehlschlägt:
quelle
Ich suchte nach einer browserübergreifenden Text-Strich-Lösung, die funktioniert, wenn Hintergrundbilder überlagert werden. Ich glaube, ich habe eine Lösung dafür, die kein zusätzliches Markup, js und funktioniert in IE7-9 (ich habe 6 nicht getestet) und keine Aliasing-Probleme verursacht.
Dies ist eine Kombination aus der Verwendung von CSS3-Textschatten, der außer IE ( http://caniuse.com/#search=text-shadow ) eine gute Unterstützung bietet , und der Verwendung einer Kombination von Filtern für IE. Die Unterstützung von CSS3-Textstrichen ist derzeit schlecht.
IE-Filter
Der Glühfilter ( http://www.impressivewebs.com/css3-text-shadow-ie/ ) sieht schrecklich aus, also habe ich ihn nicht benutzt.
David Hewitts Antwort beinhaltete das Hinzufügen von Dropshadow-Filtern in einer Kombination von Richtungen. ClearType wird dann leider entfernt, sodass wir einen schlecht aliasierten Text erhalten.
Ich habe dann einige der auf useragentman vorgeschlagenen Elemente mit den Dropshadow-Filtern kombiniert.
Etwas zusammensetzen
Dieses Beispiel wäre schwarzer Text mit einem weißen Strich. Ich verwende übrigens bedingte HTML-Klassen, um auf den IE abzuzielen ( http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ ).
quelle
filter: glow(color=white,strength=1);
Fügen Sie einfach diese Antwort hinzu. "Streicheln" des Textes ist nicht dasselbe wie "Gliederung"
Gliederung sieht gut aus. Streicheln sieht schrecklich aus.
Die an anderer Stelle aufgeführte SVG-Lösung weist dasselbe Problem auf. Wenn Sie eine Gliederung wünschen , müssen Sie den Text zweimal einfügen. Einmal gestreichelt und wieder nicht gestreichelt.
Streicheln ist NICHT skizziert
PS: Ich würde gerne wissen, wie man die SVG auf die richtige Größe eines beliebigen Textes bringt. Ich habe das Gefühl, dass es ziemlich kompliziert ist, das SVG zu generieren, es mit Javascript abzufragen, um die Extents zu erhalten und dann die Ergebnisse anzuwenden. Wenn es einen einfacheren Weg gibt, würde ich es gerne wissen.
quelle
Ich habe bessere Ergebnisse mit 6 verschiedenen Schatten erzielt:
quelle
quelle
Dieses Mixin für SASS liefert glatte Ergebnisse mit 8 Achsen:
Und normales CSS:
quelle
Das Arbeiten mit dickeren Strichen wird etwas chaotisch. Wenn Sie das Vergnügen haben, dieses Mixin zu probieren, ist es nicht perfekt und erzeugt je nach Strichgewicht eine angemessene Menge an CSS.
quelle
Mehrere Textschatten. So
etwas in der Art:
Demo: http://jsfiddle.net/punosound/gv6zs58m/
quelle
Text Shadow Generator
Hier gibt es viele gute Antworten. Es scheint, dass der Textschatten wahrscheinlich der zuverlässigste Weg ist, dies zu tun. Ich werde nicht ins Detail gehen, wie dies mit Textschatten gemacht wird, da andere dies bereits getan haben, aber die Grundidee ist, dass Sie mehrere Textschatten um das Textelement erstellen. Je größer die Textkontur ist, desto mehr Textschatten benötigen Sie.
Alle eingereichten Antworten (ab diesem Beitrag) bieten statische Lösungen für den Textschatten. Ich habe einen anderen Ansatz gewählt und diese JSFiddle geschrieben, die Umrissfarben- , Unschärfe- und Breitenwerte als Eingaben akzeptiert und die entsprechende Textschatteneigenschaft für Ihr Element generiert. Füllen Sie einfach die Lücken aus, überprüfen Sie die Vorschau und klicken Sie, um das CSS zu kopieren und in Ihr Stylesheet einzufügen.
Unnötiger Anhang
Anscheinend können Antworten, die einen Link zu einer JSFiddle enthalten, nur veröffentlicht werden, wenn sie auch Code enthalten. Sie können diesen Anhang vollständig ignorieren, wenn Sie möchten. Dies ist das JavaScript aus meiner Geige, das die Textschatteneigenschaft generiert. Bitte beachten Sie, dass Sie nicht diesen Code in Ihren eigenen Werken implementieren müssen:
quelle
Ich hatte auch dieses Problem, und das
text-shadow
war keine Option, da die Ecken schlecht aussehen würden (es sei denn, ich hätte viele, viele Schatten), und ich wollte keine Unschärfe, daher bestand meine einzige andere Option darin, Folgendes zu tun: Haben 2 Divs und für das Hintergrund-Div setzen Sie ein-webkit-text-stroke
darauf, was dann einen so großen Umriss ermöglicht, wie Sie möchten.Mit diesem konnte ich eine erreichen out Linie, weil die
stroke-width
Methode war keine Option , wenn Sie Ihren Text wollen mit einem sehr großen Umriss lesbar bleiben (weil mitstroke-width
dem Umriss wird in der Beschriftung beginnen , die es nicht lesbar macht , wenn die Breite wird größer als die Buchstaben.Hinweis: Der Grund, warum ich einen so fetten Umriss brauchte, war, dass ich die Straßenetiketten in "Google Maps" emulierte und einen fetten weißen Heiligenschein um den Text wollte. Diese Lösung hat bei mir perfekt funktioniert.
Hier ist eine Geige, die diese Lösung zeigt
quelle
Hier ist die CSS-Datei, die Sie hoffentlich bekommen, was Sie wollen
quelle