Вкажіть назви класів CSS на шляхах SVG за допомогою Illustrator


21

Чи є спосіб редагування файлів SVG в Illustrator, де ви можете вказати клас CSS для кожного шляху?

Я вже знаю в Illustrator, що якщо ви дасте імені шару фактичне ім'я, Illustrator використовуватиме це ім'я як ідентифікатор шляху, що добре, якщо ви не плануєте повторно використовувати піктограму на одній сторінці.

Моє поточне вирішення полягає в тому, щоб просто використовувати метод ідентифікаторів, а потім перетворити ідентифікатори в класи в моєму редакторі коду, але це досить прикро, що потрібно робити щоразу, коли я генерую свій SVG-спрайт.

Якщо це наразі неможливо в Illustrator, чи є інші програми, які дозволять вам вказати це? А може, пакет Grunt або Gulp?

Схоже, вам це вдасться зробити з Inkscape з хаком , тому я можу поглянути на це, якщо інших хороших рішень там немає.


Я не можу отримати ілюстратор для експорту з ідентифікаторами чи класами. Я вважаю за краще кодувати свої SVG, хоч як це не дивно звучить, і не дуже ефективно, я знаю, чи можете ви включити, яку версію ілюстратора ви використовуєте?
Даніель

Я використовую Adobe Illustrator CC версії 17.1.0
NerdCowboy

Відповіді:


5

Я роблю це із завданням Grunt. Використовуючи "grunt-text-substitute", я можу передавати свої мінімізовані SVG-файли (svgmin) через спеціальний регулярний вираз, який замінює всі потаємні посилання класів на належні класи.

В Illustrator оголосити назву шару / об'єкта як class = "дерево", наприклад. Це буде експортовано Illustrator як id = "class =" tree "" . Наведене нижче grunt завдання подбає про це і зробить його class = "tree" . Я також вставляю нижче деяких підзадач, які будуть робити очищення ідентифікатора (рекомендується).

    replace: {
        // ID cleanup: performs a manual ID cleanup as Illustrator exports a mess
        illustrator: {
            src: ['assets/svg/optimised/*.svg'],
            overwrite: true,
            replacements: [{
                // Remove escaped underscore character
                from: '_x5F_',
                to: '_'
            }, {
                // Replace class names with proper classes
                //class_x3D__x22_tank-option_x22__2_
                from: /id\=\"class_x3D__x22_(.+?)_x22_(.*?)\"/gi,
                to: function(matchedWord, index, fullText, regexMatches) {
                    return 'class="'+ regexMatches[0].toLowerCase()+'"';
                }
            }, {
                // Lowercase all ids
                from: /id\=\"(.+?)\"/gi,
                to: function(matchedWord, index, fullText, regexMatches) {
                    return 'id="'+ regexMatches[0].toLowerCase()+'"';
                }
            }, {
                // Lowercase all id references to match the previous replace rule
                from: /url\(\#(.+?)\)/gi,
                to: function(matchedWord, index, fullText, regexMatches) {
                    return 'url(#'+ regexMatches[0].toLowerCase() +')';
                }
            }, {
                // Lowercase all id href to match the previous replace rule
                from: /href\=\"\#(.+?)\"/gi,
                to: function(matchedWord, index, fullText, regexMatches) {
                    return 'href="#'+ regexMatches[0].toLowerCase() +'"';
                }
            }, {
                // Remove all font references as we will use CSS for this
                from: /font\-family\=\"(.+?)\"/gi,
                to: function(matchedWord, index, fullText, regexMatches) {
                    return '';
                }
            }]
        }
    }

Потім ви можете назвати це завдання у вашому Gruntfile таким чином:

grunt.registerTask('svgclean', [
    'replace:illustrator'
]);

7

Схоже, посилання, яке розмістив Ian Dunn, може бути вашим квитком. Ось уривок із цієї сторінки :

У параметрах експорту SVG я вибираю елементи стилю та вибираю опцію Включити невикористані графічні стилі. Він буде оголошувати sandStyle та blueSky як стилі CSS у документі SVG.

Ось SVG-вихід, сформований Illustrator CC:
<style type="text/css"> .sandStyle{fill:#BFAF8F;stroke:#A6806A;stroke-width:3;stroke-miterlimit:10;} .blueSky{fill:#338AC4;stroke:#3469B7;stroke-width:3;stroke-miterlimit:10;} </style> <g id="mySquare"> <rect x="90.5" y="15.5" class="sandStyle" width="64" height="63"/> </g> <g id="myCircle"> <circle class="sandStyle" cx="42" cy="46" r="34.2"/> </g>

Illustrator може експортувати графічні стилі як CSS в елемент стилю та застосовувати їх за допомогою класів у SVG-коді. Ось так ви можете генерувати класи у експортованому SVG. Залежно від того, що ви хочете робити в цих класах, ви можете просто визначити їх в іншому файлі CSS та видалити визначення стилів із експортованого SVG.

На пов’язаній сторінці зазначено це, але задля повноти Illustrator генерує елемент стилю та класи лише у тому випадку, якщо ви встановите CSS Properties: Style Elementв області Додаткові (можливо, вам потрібно буде натиснути More Options) діалогового вікна параметрів SVG:Зберегти> Формат: SVG> Опції SVG> Додаткові параметри> Властивості CSS: Елемент стилю

Я також зазначу, що створений код ніколи не буде цілком ідеальним для всіх ситуацій. Рукописний код, як правило, легше і легше читати людині (якщо це саме ви збираєтеся). Я рекомендую ознайомитися з документом користувача Wikimedia Quibik про очищення файлів SVG вручну та перегляньте grunt-svgmin .


2

Я щойно зіткнувся з цим питанням і знайшов таке рішення (для Illustrator CC):

Застосуйте назву "Графічні стилі" до шляхів, які потрібно назвати та експортувати SVG за допомогою внутрішнього CSS. Наприклад, графічний стиль з назвою my-icon визначить внутрішній my-iconклас і застосує цей клас до правильних шляхів.

Приклад із скріншотами:

Створіть новий графічний стиль: Параметри графічного стилю

Експортувати як ... SVG:

Експортувати як ... SVG

Вихід:

<defs><style>.my-icon{ fill:#000; }</style></defs> <path class="my-icon">...</path>

Джерело: https://www.viget.com/articles/5-tips-for-saving-svg-for-the-web-with-illustrator

  1. Використовуйте відповідні налаштування властивостей CSS (щастя розробника)

CC: ілюстратор використовує визначені графічні стилі для створення названих класів (розумних, корисних)


1

В Illustrator 21.0.0 (2017) та, можливо, у більш ранніх версіях:

  1. Створіть новий стиль на панелі «Графічні стилі»
  2. Двічі клацніть новий стиль і дайте йому власну назву, наприклад "мій стиль"
  3. Застосуйте цей стиль до одного або декількох елементів
  4. Експорт SVG

Елементам у SVG буде надано атрибут класу зі значенням "мій стиль". Тоді ви можете використовувати зовнішній CSS для зміни стилів.

Зауважте, що якщо назва вашого стилю містить пробіл, воно перетвориться на дефіс.


0

Простий спосіб зробити це, він схожий на завдання Grunt, але ще простіше:

Всім об’єктам, які ви хочете скласти в клас, дайте назви, наприклад: "myClassmainCircle" та "myClassmainStar". Після експорту замініть всі: 'id = "myClass" на "class ="'

Результатом буде: class = "mainCirle" class = "mainStar"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.