Gibt es eine Möglichkeit, SVG-Dateien in Illustrator zu bearbeiten, wobei Sie für jeden Pfad eine CSS-Klasse angeben können?
Ich weiß bereits in Illustrator, dass Illustrator diesen Namen als Pfad-ID verwendet, wenn Sie dem Ebenennamen einen tatsächlichen Namen geben. Dies ist in Ordnung, wenn Sie das Symbol nicht mehrmals auf derselben Seite verwenden möchten.
Meine derzeitige Problemumgehung besteht darin, nur die IDs-Methode zu verwenden und die IDs dann später in Klassen in meinem Code-Editor zu konvertieren. Es ist jedoch ziemlich ärgerlich, dies jedes Mal tun zu müssen, wenn ich mein SVG-Sprite generiere.
Wenn dies in Illustrator derzeit nicht möglich ist, gibt es andere Apps, mit denen Sie dies angeben können? Oder vielleicht ein Grunz- oder Gulp-Paket?
Es sieht so aus, als ob Sie es mit Inkscape mit einem Hack schaffen könnten, also schaue ich mir das an, wenn es keine anderen guten Lösungen gibt.
quelle
Antworten:
Ich mache das mit einer Grunt-Aufgabe. Durch die Verwendung von "grunt-text-replace" kann ich meine minimierten SVGs (svgmin) durch einen benutzerdefinierten regulären Ausdruck übergeben, der alle verstümmelten Klassenreferenzen durch die richtigen Klassen ersetzt.
Deklarieren Sie in Illustrator den Namen der Ebene / des Objekts beispielsweise als class = "tree" . Dies wird von Illustrator als id = "class =" tree "" exportiert . Die folgende Grunzaufgabe kümmert sich darum und macht es class = "tree" . Ich füge auch einige andere Unteraufgaben ein, die eine ID-Bereinigung durchführen (empfohlen).
Dann können Sie diese Aufgabe in Ihrem Gruntfile aufrufen als:
quelle
Der Link, den Ian Dunn gepostet hat, könnte Ihr Ticket sein. Hier ist ein Auszug von dieser Seite :
Illustrator kann Grafikstile als CSS in ein Stilelement exportieren und über Klassen im SVG-Code anwenden. Auf diese Weise können Sie Klassen in Ihrer exportierten SVG generieren. Abhängig davon, was diese Klassen tun sollen, können Sie sie einfach in einer anderen CSS-Datei definieren und die Stildefinitionen aus der exportierten SVG-Datei entfernen.
Auf der verlinkten Seite wird dies angegeben. Der Vollständigkeit halber generiert Illustrator das Stilelement und die Klassen jedoch nur, wenn Sie dies
CSS Properties: Style Element
im Bereich "Erweitert" (möglicherweise müssen Sie darauf klickenMore Options
) des Dialogfelds "SVG-Optionen" festlegen:Ich würde auch bemerken, dass generierter Code niemals für alle Situationen perfekt sein wird. Handgeschriebener Code ist in der Regel leichter und für Menschen einfacher zu lesen (wenn Sie das möchten). Ich würde empfehlen, das Dokument des Wikimedia-Benutzers Quibik über das manuelle Bereinigen von SVG-Dateien und einen Blick auf grunt-svgmin zu werfen .
quelle
Ich bin gerade auf dieses Problem gestoßen und habe die folgende Lösung gefunden (für Illustrator CC):
Wenden Sie benannte "Grafikstile" auf die Pfade an, die Sie benennen möchten, und exportieren Sie die SVG-Datei mit internem CSS. Ein Grafikstil mit dem Namen my-icon definiert beispielsweise eine interne
my-icon
Klasse und wendet diese Klasse auf die richtigen Pfade an.Beispiel mit Screenshots:
Erstellen Sie einen neuen Grafikstil:
Exportieren als ... SVG:
Ausgabe:
<defs><style>.my-icon{ fill:#000; }</style></defs> <path class="my-icon">...</path>
Quelle: https://www.viget.com/articles/5-tips-for-saving-svg-for-the-web-with-illustrator
CC: illustrator verwendet die definierten Grafikstile, um benannte Klassen zu erstellen (intelligent, nützlich)
quelle
In Illustrator 21.0.0 (2017) und möglicherweise in früheren Versionen:
Die Elemente in der SVG erhalten ein Klassenattribut mit dem Wert "my-style". Dann können Sie externe CSS verwenden, um Stile zu überschreiben.
Beachten Sie, dass Ihr Stilname, wenn er ein Leerzeichen enthält, in einen Bindestrich umgewandelt wird.
quelle
Einfacher Weg, es ist ähnlich wie bei Grunt, aber noch einfacher:
Geben Sie für alle Objekte, die Sie als Klasse definieren möchten, den Namen "myClassmainCircle" und "myClassmainStar" an. Nach dem Export alle ersetzen: 'id = "myClass' mit 'class ="'
Das Ergebnis wird sein: class = "mainCirle" class = "mainStar"
quelle