Nehmen wir an, Sie haben etwas mit benutzerdefinierten Schriftarten entworfen, das etwas ausgefallen war. Vielleicht ist ein bestimmtes Wort zwischen den Oberlängen eines anderen Wortes darunter positioniert. Etwas Text wurde darunter ausgekert, um die Breite dieses Wortes anzupassen.
Das ist etwas, wovon wir einem Grafikdesigner, der von Print auf Web umsteigt, abraten würden. Es ist zu fummelig. Zu viel empfindliche, unskalierbare absolute Positionierung. Zu viel Risiko durch unterschiedliches Schriftarten-Rendering-Verhalten.
Aber mit Inline-SVG können wir das tun und zwar gut.
SVG <text>
Der große „Trick“ hierbei ist, dass SVG ein <text>-Element hat, das genau das ist: Text. Keine Umrisse von Text, nur normaler, auswählbarer, zugänglicher Webtext.
<svg xmlns="http://www.w3.org/2000/svg"
width="800px" height="300px" viewBox="0 0 800 300">
<text x="25" y="55"
font-family="'Lucida Grande', sans-serif"
font-size="32">
Regular ol' text here. Hi.
</text>
</svg>
<text> verwendet gerne benutzerdefinierte Schriftarten
Verwenden Sie @font-face und benutzerdefinierte Schriftarten auf Ihrer Website? Kein Problem. Dieses SVG verwendet sie gerne. Dies funktioniert mit Inline-SVG, wo Sie font-family mit CSS festlegen können
<text class="hook">Some Cool Text Yeah.</text>
.hook {
font-family: "proxima-nova", sans-serif;
}
aber es funktioniert sogar für SVG-als-<img> (oder background-image, vermutlich) ebenfalls, solange font-family auf die benutzerdefinierte Schriftart mit dem richtigen Namen verweist.
<text x="25" y="55"
font-family="'proxima-nova', sans-serif"
font-size="32">
Design-Software verwenden
Ich habe nicht viele verschiedene Software getestet, aber Adobe Illustrator kann „Als SVG speichern“. Wenn Sie mit Textelementen entwerfen, erhalten Sie <text> in der .svg-Datei.

Möglicherweise müssen Sie ein wenig von Hand nachbessern, um die Schriftartattribute/-stile zu entfernen oder anzupassen.
Das Schöne daran ist, dass es die fummelige Aufgabe der Positionierung mit CSS entfällt und Sie dies direkt in einer Software erledigen können, die darin hervorragend ist. Dann erfolgt die eigentliche Positionierung mit dieser Matrix-Transformation.
Skaliert perfekt
Wenn Sie versucht hätten, ein solches Design nur in HTML/CSS zu replizieren, wäre nicht nur die Positionierung fummelig, sondern es würde auch nicht skalieren. Etwas wie font-size: 41px; top: 37px; left: 81px; funktioniert nur bei einer Größe. Vielleicht könnten Sie etwas mit vw-Einheiten und Prozenten und so weiter machen, aber in SVG ist es einfach viel einfacher.
In SVG bezieht sich die festgelegte Schriftgröße auf die Größe des SVG selbst und nicht auf das gesamte Dokument. Wenn Sie also die Größe des SVG anpassen (es kann leicht eine flexible Breite haben), bleibt Ihr typografisches Design perfekt erhalten.
Eine flexible Breite, die Art von Setup
<div class="ad-wrapper">
<svg class="ad">
<text ... />
<text ... />
<text ... />
</svg>
</div>
/*div*/.ad-wrapper {
height: 0;
padding-top: 100%;
position: relative;
}
/*svg*/.ad {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}

Mit Schriftarten gestalten, die Sie im Web haben
Dieser Workflow funktioniert am besten, wenn Sie in lokaler Software mit den Schriftarten herumspielen können, die Sie auch über @font-face verfügbar haben. Wenn Sie beispielsweise mit Open Sans arbeiten würden, könnten Sie eine Kopie davon von Font Squirrel für die Desktop-Nutzung herunterladen und diese dann im Web über Google Fonts verwenden.
Ich denke, Typekit macht diesen Workflow ziemlich gut, mit seiner Desktop-Synchronisierungsfunktion. Wenn Sie Schriftarten auswählen, können Sie diese einem Kit hinzufügen, um sie im Web zu verwenden, und sie auch lokal über das Creative Cloud Ding synchronisieren.

Dann sind sie direkt in Illustrator verfügbar.

Es ist etwas seltsam, da die font-family-Namen etwas abweichen werden. Zum Beispiel könnten Sie etwas wie
<text font-family="'MarketOT'">Example</text>
aus Illustrator erhalten, aber im Web muss es so sein
<text font-family="ff-market-web, cursive">Example</text>
Aber das ist nun mal Teil der Arbeit. Vielleicht gibt es dafür einen guten Grund. Vielleicht können sie diese Dinge eines Tages synchronisieren.
Wann man es verwenden soll
Wenn Sie dieselben benutzerdefinierten Schriftarten auch anderswo auf der Website verwenden, ist es ein No-Brainer, verwenden Sie <text>-basierte Designs nach Bedarf. Wenn die verwendeten Schriftarten anderswo nicht verwendet werden, könnte es eine große Aufgabe sein, eine ganze benutzerdefinierte Schriftart nur für eine einzige Grafik einzubinden. Oder vielleicht auch nicht. Sie müssen die Optionen selbst abwägen.
Im hier gezeigten Beispiel habe ich Proxima Nova und FF Market von Typekit verwendet, und das Kit war etwa 115 KB groß. Nicht schlecht, wenn der Rest der Website diese Schriftarten auch verwenden würde. Dann habe ich das Beispiel in Outlines umgewandelt (was bedeutet, dass <text> wegfällt und <path>s zur Darstellung der Buchstabenformen verwendet werden), und die Datei schwoll von unglaublichen 4 KB auf unglaubliche 260 KB an (größer als die gesamten Schriftarten, wenn auch entpackt).
Ich bin sicher, in einigen Fällen macht das Umwandeln in Outlines Sinn, und manchmal funktioniert sogar eine Retina-Rastergrafik, vorausgesetzt, Sie ergreifen alle notwendigen Schritte für die Barrierefreiheit (mindestens ein gutes alt-Tag).
Demo
Hier ist eine Demo, die alles in Aktion zeigt, einschließlich der Skalierung, der Auswählbarkeit und der benutzerdefinierten Schriftarten
Siehe den Pen SVG mit
Ich verwende ein Inline-SVG als mein Logo zusammen mit dem auf Outlines umgewandelten Websitesnamen. Gibt es spezielle Unterstützung, die wir berücksichtigen müssen? Oder können wir einfach weitermachen und die Outline durch SVG
textersetzen?Wow! Toller Beitrag zu etwas lebenswichtig Wichtigem, das ich übersehen hatte. Ich hatte immer auf Outlines gesetzt, weil beim Öffnen einer .svg von meinem Desktop in einem Browser Text in der Standard-Schriftart des Browsers angezeigt wurde.
Dies könnte die Dateigröße für Grafiken mit viel Text erheblich reduzieren. Gedankenexperiment: Stellen Sie sich eine Hintergrundgrafik mit geringer Deckkraft vor, die Computercode, Zeitungsausschnitte, Handschrift usw. darstellen soll. Als Text in Outlines könnte eine .svg riesig sein, aber als Text wäre sie überschaubar groß.
Das macht auch die Bearbeitung einer .svg-Grafik viel einfacher (denken Sie an eine Grafik, die für ein wiederkehrendes Ereignis wirbt – es ist einfach, in die .svg zu gehen und die Daten zu ändern).
Weiß jemand, ob** Inline-.svg-Text SEO-Implikationen hat**? Werden Suchalgorithmen ihn als Text-Text (regulären Inhalt) behandeln oder ihn ignorieren, wie sie es bei Text in Outlines tun würden?
Danke!
Ich habe ein bisschen mit Ihrem Pen herumgespielt und festgestellt, dass der SVG-Teil angezeigt wird, wenn Sie die umgebenden Divs entfernen. Weiß jemand, warum das so ist?
Hallo Karl, konntest du etwas über die SEO-Implikationen von etwas herausfinden? Das interessiert mich auch.
http://www.joningram.co.uk/article/svg-search-engine-friendly-accessible/
Guter Link von Iskael, der zu suggerieren schien, dass Google auch innerhalb der .svg-Tags indexiert: Aber das ist kein endgültiger Beweis. Ich wünschte, Google würde dazu eine direkte Anleitung geben.
Ich habe festgestellt, dass fast keines Ihrer Inline-SVG-Beispiele in Firefox funktioniert (der SVG-Teil wird überhaupt nicht angezeigt), was seltsam ist, da es ihn vollständig unterstützen soll.
Ich habe ein bisschen mit Ihrem Pen herumgespielt und festgestellt, dass der SVG-Teil angezeigt wird, wenn Sie die umgebenden Divs entfernen. Weiß jemand, warum das so ist?
Ich habe gehört, wie jemand auf Twitter das sagte, und es stellte sich heraus, dass das Div eine Klassenbezeichnung „ad“ hatte und Ad-Blocker die Anzeige blockierten.
Das bringt mich dazu, auf allen meinen Websites
<html class="ad">zu setzen.Ja, Adblock ist ziemlich dumm. Ich habe monatelang damit gekämpft zu verstehen, warum meine benutzerdefinierte Schriftart auf meiner Website nicht angezeigt wurde. Das Problem: Adblock hat sie blockiert, weil sie „Reklame“ hieß… Verdammt!
Reklame ≈ Reclame vom Verb „Reclamar“ im Spanischen.
Reclamar bedeutet „beanspruchen“. „Beanstanden“ kann sicherlich auf mehr Arten mit Anzeigen in Verbindung gebracht werden als nicht.
Ich denke tatsächlich, dass AdBlocker ziemlich clever ist, zugegeben, manchmal zu clever.
Hat jemand Informationen darüber, wie man das mit Inkscape erreicht? Nach einem kurzen Test scheint Inkscape Textelemente innerhalb von Tags zu speichern
Hah, natürlich war es so etwas Dummes.
(Manche Seiten weisen freundlich darauf hin, dass ihre Anzeigen nicht aufdringlich sind, und bitten die Nutzer, sie in Adblock zu erlauben, was eine Idee sein könnte. Bei der aktuellen Lage des Webs werde ich Adblock niemals vollständig deinstallieren, und ich bin sicher, viele fühlen sich genauso.)
Reklame ist eigentlich das deutsche Wort für Anzeige.
html class="ad"bewirkt nichts (via Firebug).Zur Info – Google Fonts erlaubt Ihnen auch den Download lokaler Kopien, sodass Sie, wenn das Ihr bevorzugter Web-Font-Anbieter ist, nirgendwo anders hingehen müssen, um Ihre lokalen Designkopien zu erhalten. Wenn die Verwendung von Einmal-Schriftarten ein Problem darstellt, bietet Google auch eine Beta-Funktion, mit der Sie die Liste auf nur wenige Glyphen reduzieren können – https://developers.google.com/fonts/docs/getting_started#Optimizing_Requests.
Wirklich großartig.
Hat jemand Informationen darüber, wie man das mit Inkscape erreicht? Nach einem kurzen Test scheint Inkscape Textelemente innerhalb von Tags zu speichern..
Mit speichert Textelemente in Tags müssen Sie sich wahrscheinlich auf <tspan> beziehen. Inkscape erwartet, dass alle Textelemente von diesem Tag umschlossen sind, hauptsächlich für mehrzeiligen Text. SVG erfordert dies nicht für einzeilige oder einheitliche Textelemente.
Um etwas Ähnliches wie Chris' Beispiel zu produzieren, müssen Sie die von Inkscape erzeugten x- und y-Werte im <tspan>-Tag beibehalten, sonst verschwindet der Text (muss das untersuchen). Eine weitere Sache mit <tspan> ist, dass es nicht proportional zu seinem übergeordneten Div skaliert (in diesem Beispiel .col).
Für Skalierbarkeit habe ich diese xy-Werte in das <text>-Tag kopiert und die <tspan>-Umrandung des Textes gelöscht, ihm eine Klasse zugewiesen und die Stile unter diesem Klassennamen in meine Stylesheet kopiert, und es funktioniert!
Das HTML
Das CSS
@Jimmy
Wenn es doch nur so einfach wäre. Ich habe es gerade getestet, und Inkscape verwendet benutzerdefinierte Elemente für Text, um automatisches Text-Wrapping zu ermöglichen. Selbst wenn Sie die Option „Als…“ „Plain SVG“ verwenden, erhalten Sie immer noch all diese Elemente, die nicht zu den Standard-SVG-Spezifikationen gehören (sie waren eine experimentelle Spezifikation, die aufgegeben wurde) und die von den Browsern nicht gerendert werden.
Für @hannenz und alle anderen, die dieses Problem haben, hier ist die Lösung, um Ihren Inkscape-Fließtext in Standard-SVG-Textelemente umzuwandeln
Wählen Sie jeden Textblock aus und verwenden Sie dann „In Text konvertieren“ im Menü „Text“, um die Positionierung als einfache SVG <text> und <tspan>-Elemente zu sperren.
Speichern Sie die Datei als „Plain SVG“
Öffnen Sie die Datei in einem Texteditor und löschen Sie den gesamten zusätzlichen Inkscape-Kram (alles zwischen <flowRoot> und </flowRoot>).
Das Inkscape-Handbuch enthält weitere Informationen zu den verschiedenen Arten von Textelementen und deren Erstellung (damit Sie die Erstellung von Fließtextelementen überspringen können, wenn Sie nur absolut positionierte einzeilige Textabschnitte verwenden).
Du entdeckst das erst jetzt? SVG ist seit über einem Jahrzehnt ein W3C-Standard, warum hast du dich bisher nicht mit SVG beschäftigt?
Sie erkennen doch, dass Sie über ein Jahrzehnt Ihres Arbeitslebens verschwendet haben, weil Sie nicht lernen und studieren wollten (viel zu schwer). Ihre Abhängigkeit von anderen, die Ihnen diktieren, was Sie wann tun werden, ist nicht sehr bewundernswert.
Hallo James. Wie geht es dir heute, Kumpel? Achte darauf, genug Schlaf zu bekommen!
James, niemand behauptet, dass Chris ein Experte auf diesem Gebiet ist, noch dass er alles über Frontend weiß. Er ist sehr gut darin, über CSS, HTML und Frontend-Entwicklung zu schreiben, und das macht seinen Blog beliebt, auch wenn er nur lernt und alte Dinge entdeckt.
„SVG ist seit über einem Jahrzehnt ein W3C-Standard“
Aber der fehlende IE8-Support und das mangelnde Verständnis von .svg in der Webentwickler-Community sowie die Verfügbarkeit von .svg-Stock-Art haben seine Nutzung bisher eingeschränkt. Der Punkt des Blogposts ist, das Verständnis von .svg zu verbessern und die Einführung zu fördern. Ein erheblicher Teil der Webbilder auf neuen Websites, die gerade erstellt werden, sind zu groß und zu niedrig aufgelöst, da sie .jpg oder .png sind. Während ich Ihnen, James, für die sofortige Übernahme und das Verständnis aller W3C-Standards applaudiere, müssen wir Sterblichen manchmal aufholen.
Sieht aus, als hätte James heute Morgen ordentlich den Haterade™ getrunken.
Neben den Problemen, dass .svg in einer Vielzahl von Browsern out-of-the-box Probleme hat, ist es nicht einfach, .svg-Grafiken zu erstellen, es erfordert ein grundlegendes Verständnis von Illustrator, Inkscape oder Ähnlichem, was sich stark von Photoshop oder so ziemlich jedem der Standard-Bitmap-Programme unterscheidet.
Da SVG erst ab Version 9 in IE integriert wurde (dabei sind noch nicht einmal diejenigen mitgezählt, die IE 8 nicht aufrüsteten, selbst als IE Version 10 erreichte), was war der Anreiz für Entwickler, einen W3C-Standard zu verwenden, den über 80 % ohne Download eines Plugins nicht sehen konnten? (Viel Glück, den durchschnittlichen Internetnutzer dazu zu bringen, ein Browser-Plugin herunterzuladen und zu installieren.) IE 9, das SVG endlich unterstützte, kam erst 2011 heraus… also, was hätte der Sinn darin gehabt, mit SVG zu arbeiten, abgesehen von Ausprobieren und vielleicht Angeberei?
Ihr spöttischer Kommentar trägt nichts zur Diskussion bei. Wir sind hier, um zu lernen (besser spät als nie). Bitte respektieren Sie das oder suchen Sie woanders, um Ihre Negativität zu verbreiten.
Typografischer Pingel
Aus dem Eröffnungsparagraphen Ihres Artikels
Text wird nicht „ausgekert“. Text wird auf Abstand gesetzt. Kerning ist eine sehr spezifische Art von Abstand, die nur auf ein Buchstabenpaar angewendet wird, bei dem der natürliche Abstand falsch aussehen würde. Zum Beispiel zwischen einem großen A und einem großen V. Manchmal machen die Eigenschaften eines Buchstabenpaares den Abstand dazwischen so, dass er zu groß oder zu klein aussieht. Kerning wird durchgeführt, um optische Probleme zwischen zwei bestimmten Buchstaben zu korrigieren.
Aber das ist nicht dasselbe wie das Aufspreizen aller Buchstaben eines Wortes oder einer Phrase. Das ist nur Abstand.
Programmierer machen das oft falsch. Tatsächlich arbeite ich gerade an einem Projekt, das imagemagick verwendet. Es hat eine Funktion für den Buchstabenabstand. Aber es nennt es Kerning. CSS hat dies tatsächlich mit der Eigenschaft „letter-spacing“ richtig gemacht.
Und noch eins, völlig unerheblich
Die einfachen Anführungszeichen in Ihren Überschriften sehen total wie Gravis-Akzente (` ) aus, die auf Buchstaben wie è gehören, anstatt einfacher Anführungszeichen (‚ und ’).
Vielleicht haben Sie es nicht bemerkt, vielleicht ist es Ihnen egal… Es sieht einfach so seltsam aus.
Basierend auf Dominics Kommentaren zum Backtick-
textvermute ich, dass dies der Grund ist, warum der Twitter-Link-Button in Chrome/OSX nicht funktioniert hat. (Ich habe trotzdem getwittert). ;-)Tatsächlich ist der korrekte Begriff für den Gesamt-Abstand zwischen einer Gruppe von Buchstaben Tracking.
Weiß jemand, ob Google den Text innerhalb der .svg-Elemente indexiert?
Hier ist die Antwort: http://googlewebmastercentral.blogspot.com/2010/08/google-now-indexes-svg.html
Danke für die Antwort, Iskael. Ich habe diesen Artikel gelesen, bevor ich meine Frage gestellt habe, aber ich konnte nicht genau verstehen, was Google zu indizieren behauptete: Metadaten aus der .svg, eingebetteter Text, oder wurden nur Bilder in der Bildersuche berücksichtigt?
Versuchen Sie diese URL: Shop Talk SVG in Google Bildersuche Ergebnis
Google indexiert die Metadaten von SVG, so wie es Attribute wie „alt“ oder „title“ auf IMG-Tags indexiert
Vielleicht kann Jon's Artikel erklären, wie Google Text innerhalb von SVG indexiert: http://www.joningram.co.uk/article/svg-search-engine-friendly-accessible/
Können wir diese großartige Funktion für Browser polyfillen, die SVG nicht vollständig oder überhaupt nicht unterstützen?
Chris hat einen weiteren Artikel genau dazu: https://css-tricks.de/using-svg/
Aber es scheint, dass SVG heutzutage so gut unterstützt wird, dass Polyfills sich vielleicht nicht lohnen.
IE8 unterstützt .svg nicht und, schmerzlich, es hat immer noch etwa 10 % Marktanteil. Es gibt viele (Dutzende) Lösungen, um Fallbacks bereitzustellen. Es ist nicht so zeitaufwändig, ein Bild als .png und .svg zu speichern (immer .png statt .jpg verwenden, falls die Bilder transparent sind) und sie am selben Ort auf dem Server abzulegen.
Hallo zusammen,
Diese Funktion ist perfekt, aber wenn AdBlock oder andere Werbeblocker im Browser installiert sind, funktioniert sie nicht.
Danke für den Artikel, Chris.
Meiner Erfahrung nach hat SVG-als- aufgrund von Sicherheitsbedenken größere browserübergreifende Probleme (versuchen Sie es in Firefox) mit verknüpften Ressourcen.
Ich stimme dem zu: Externe Schriftarten funktionieren in Firefox innerhalb von SVGs, die als Bilder verwendet werden (<img>-Tags oder CSS-Hintergründe).
Andere pingelige Vorschläge
Der Code-Schnipsel im Abschnitt **Skaliert perfekt** sollte ein viewBox-Attribut enthalten (andernfalls skaliert das Bild überhaupt nicht). Ihre Live-Beispiele haben es, aber nicht jeder weiß, dass es erforderlich ist.
Für Barrierefreiheit und SEO sollte die Reihenfolge, in der die Textelemente im Code erscheinen, der logischen Lesereihenfolge entsprechen („Graves Mountain Bluegrass Festival“). Idealerweise sollte für alles, was eine einzelne Phrase ist, als <tspan>-Elemente innerhalb eines einzigen <text>-Elements gerendert werden, aber dies erfordert die Positionierung mit x/y-Attributen und nicht mit Transformationen (da Sie einzelne tspan-Elemente nicht transformieren können).
Sieht so aus, als hätten Sie im ersten Satz nach „Skaliert perfekt“ versehentlich ein Wort ausgelassen. Nützlicher Artikel trotzdem!
Danke, ich werde das anpassen.
Irgendwie schlägt die Demo in Firefox (neueste 29.0.1/Win) fehl, funktioniert aber in Chrome und IE. Der Text mit Abstand ist tatsächlich nicht so. Irgendwelche Ideen, warum?
Firefox unterstützt die CSS-Eigenschaft
letter-spacingnoch nicht, ebenso wenig wie einige andere typografische CSS-Eigenschaften.Um den Abstand in Firefox zum Laufen zu bringen, müssen Sie das dx-Attribut verwenden, um die Anpassung hinzuzufügen. Es ist jedoch etwas umständlich, da Sie eine Liste von Anpassungen für jedes einzelne Zeichen angeben müssen
http://codepen.io/AmeliaBR/pen/EhAHi
P.S. An Chris: Ich sehe, du hast die automatische Kreditlinie für geforkte Pens implementiert: nett! Weniger nett: Der Code-Block scheint in der Kommentarvorschau nicht richtig kodiert zu werden.
Danke für den Artikel, Chris. SVG ist großartig, es hat einige Nachteile, aber trotzdem ist es oft eine große Hilfe.
Ich finde es toll, wie das helfen könnte, die Dateigröße für Dinge wie Textlogos zu reduzieren.
Ich habe kürzlich SVG aufgegeben und mich für ein skaliertes PNG für ein Logo entschieden, da das SVG über 60 KB groß war und das PNG weniger als 30 KB. Ich weiß, dass die große SVG-Dateigröße von den Textpfaden kam.
Ich bin froh, dass du auch darauf hingewiesen hast, dass die Einsparungen bei der Dateigröße vernachlässigbar sein könnten, es sei denn, du verwendest die benutzerdefinierte Schriftart auch woanders. Aber was wäre, wenn die benutzerdefinierte Schriftart stark unterteilt wäre, so dass sie nur die im Logo verwendeten Zeichen enthält? Bin gleich zurück, ich probiere das mal aus...
Gerade als ich dachte, SVG könnte nicht noch besser werden, entdecke ich eine weitere großartige Sache.
Das Speichern von SVGs mit nur einer Dezimalstelle sowie „Pfade vereinfachen“ in Illustrator kann Dinge kleiner machen. Außerdem reduziert die Verwendung von Symbolen für Teile von SVG mit gleichem Aussehen die Datenmenge. Und natürlich, wenn Sie Teile des Bildes mit dem Pathfinder in AI „ausschneiden“, ist es IMMER notwendig, diese Pfade mit einem Messerwerkzeug in AI abzuschneiden, da die Pfade noch vorhanden sind, nur nicht sichtbar.
All dies wird Ihnen jedoch nicht helfen, die Größe von SVG zu reduzieren, wenn Sie Schlagschatten verwenden (schlecht, schlecht, schlecht! – das wird als Bitmap in data uri vorgerendert) und den Text umreißen. Dies sollte wirklich vermieden werden, wenn Sie keinen starken Grund dafür haben.
Dies ist ein großartiger Beitrag und kommt für mich genau zur richtigen Zeit. Ich habe eine Frage: Weiß jemand, ob diese SVGs von Suchmaschinen gesehen werden? Ich möchte ein SVG als Produkttitel auf einer Produktseite oben verwenden. Normalerweise würde ich eine H1 verwenden, möchte aber ein schönes typografisches Design für jedes Produkt beibehalten UND trotzdem gut für SEO sein. Vielleicht frage ich zu viel :-) Jede Hilfe wird sehr geschätzt.
Dieser Artikel besagt, dass sie SVGs tatsächlich indizieren.
http://googlewebmastercentral.blogspot.ca/2010/08/google-now-indexes-svg.html
Ich habe jedoch recherchiert und nichts gefunden, was sich auf die Verwendung von H1, H2 usw. in SVGs bezieht. Ich vermute, das wird nicht unterstützt. Ich vermute, das Beste, was Sie tun können, ist, Ihren Code in eine H1 zu packen, aber das ist nur gut, wenn Sie nicht mehr als 2 „Arten“ von Text haben. (D. h. wenn Ihr SVG idealerweise die H1 und die H2 enthalten würde)
Hat jemand weitere Kenntnisse in dieser Hinsicht? Kann man etwas anderes als Text effektiv in SVGs einfügen?
Nur eine spontane Idee, nicht getestet
Behalten Sie das
h1-Tag über dem SVG (ja, Sie müssen den gleichen Text zweimal eingeben, aber das ist ein sehr geringer Overhead, wenn überhaupt) und wenden Sie dann die bekannte Bildersetzungs-Technik darauf an.Ich würde zur Sicherheit noch
margin:0;undheight:0;hinzufügen.So erhalten Sie das Beste aus beiden Welten: schöner skalierbarer und reaktionsfähiger Text mit SVG, plus die SEO-„Konformität“ mit der
h1(oder jedem anderen Header).—
http://www.zeldman.com/2012/03/01/replacing-the-9999px-hack-new-image-replacement/
Ich würde normalerweise empfehlen, das SVG in die Überschriften-Tags zu setzen.
Schicke Überschrifthttp://codepen.io/AmeliaBR/pen/jicEw?editors=110
Ältere Browser wie IE8, die SVG nicht erkennen, sollten Ihnen immer noch die grundlegenden Überschriftenstile liefern, Suchmaschinen und Screenreader sollten den SVG-Inhalt als Teil einer Überschrift erkennen, und Sie wiederholen keine Elemente, sodass kein Risiko besteht, eine Überschrift zu bearbeiten, aber zu vergessen, den unsichtbaren Überschriftentext entsprechend zu ändern.
Zu Ben Smiths Kommentar bezüglich mehrerer Überschriftenebenen, die in einem einzigen Bild dargestellt werden: Ich denke, in vielen Fällen könnten Sie es in zwei (möglicherweise überlappende) SVGs aufteilen, aber wenn das für Sie nicht funktioniert, könnten Sie die ARIA-Rolle „heading“ verwenden, um die strukturelle Ebene für jedes Text- oder tspan-Element anzugeben.
Für einen „Best of both worlds“-Ansatz für stark stilisierte Texte (nicht nur eine Schriftart) oder anstelle der Einbindung einer Schriftart nur für ein SVG, wie z. B. ein Logo
Konvertieren Sie jeden speziellen Schrifttext in Konturen.
Fügen Sie den Text in ein
text fill="transparent"-Element ein, das über dem konturierten Text positioniert ist.Benutzer können jetzt Text aus dem SVG auswählen, ohne spezielle Schriftarten zu benötigen!
Ich habe keine Ahnung, ob dies als „Black Hat“-SEO-Technik gelten würde.
Ich denke, das wäre „Black Hat“. Zu sehr wie die alte Black-Hat-Taktik aus den späten 1990er Jahren, viele Schlüsselwörter als kleine weiße Schrift auf weißem Hintergrund einzufügen. Ich gehe von der Theorie aus, dass Google letztendlich (wenn sie es nicht schon tun) Text innerhalb einer .svg lesen kann. Sie verstehen den Alt-Tag, und ich würde denken, ihr brillanter Algorithmus könnte herausfinden, dass es keinen sinnvollen Unterschied zwischen einem Bild eines Pizza-Restaurants am oberen Rand der Seite und Text, der „Pizza-Restaurant“ sagt, gibt.
Der Hauptgrund, warum ich in meinem aktuellen Projekt nicht auf SVG umsteigen kann, ist, dass die Füllfarbe von SVGs von CSS nicht manipuliert werden kann, wenn sie über einen Pseudo-Selektor eingefügt wird.
Beispiel
Soweit ich das herausfinden konnte, ist dies mit SVG nicht möglich. Irre ich mich?
Was zum Teufel ist ein Mouutaiu?
Hat jemand Informationen darüber, wie man das mit Inkscape erreicht? Nach einem kurzen Test scheint Inkscape Textelemente innerhalb von Tags zu speichern..
Tolle Ausarbeitung, Chris!
Ich habe das Textelement in SVG für responsive Diagrammbeschriftungen verwendet und die Größenänderung funktioniert einwandfrei. Der einzige Nachteil ist, dass Sie, wenn Sie den Text innerhalb eines Begrenzungsrahmens haben möchten, ein weiteres Element (wie ein Rechteck) darunter platzieren und dieses auf die Breite des Textes dimensionieren müssen.
Das ergibt aber Sinn, das macht man ja auch in Illustrator so.
Die Demo zeigt nur die beiden Kontrollkästchen und sonst nichts...
Höchstwahrscheinlich: Sie verwenden einen Ad-Blocker. Und dieser Ad-Blocker blockiert Divs mit der Klasse „ad“.
Ich würde es ändern, aber ich halte es für eine lustige Lektion.
Ich denke, Adblocker sind heutzutage nicht mehr so einfach.
...Wie dieser Fiddle beweist
http://jsfiddle.net/3qtsQ/
Der Text sollte meiner Logik nach nicht erscheinen, aber er tut es. Also muss etwas anderes vor sich gehen.
Ich denke, es ist ziemlich einfach, außer dass es seitenabhängig ist. Es gibt eine tatsächliche Anzeige auf CodePen, die den Klassennamen „ad“ verwendet. Jemand hat sich also die Mühe gemacht, dies an ein globales Repository von zu blockierenden Dingen zu melden, und deshalb wird es auf CodePen blockiert.
Ich bin nicht verbittert darüber, ich werde nur keine Demo ändern, um Leute zu befriedigen, die auf meiner Website Anzeigen blockieren.
Natürlich nicht. Aber Sie wissen jetzt zumindest, dass es existiert.
Und dass class=ad in keinem Projekt eine gute Idee ist. Also habe ich heute etwas dazugelernt.
Ich sehe nichts. Chrome Version 34.0.1847.116 Ubuntu
Ich bin spät dran mit SVG und finde sie in responsiven Builds, wahrscheinlich auch auf Websites, problematisch. Ich kann die vertikale Größe/Abstände des SVG-Elements nicht kontrollieren. Ich habe festgestellt, dass die Unterstützung im Allgemeinen mangelhaft ist – gibt es hier einen bestimmten Prozess, den ich vermisse? (…im Moment verwende ich ziemlich den SVG-Embed-Code, der direkt aus Illustrator kopiert wurde)