इलस्ट्रेटर का उपयोग करके एसवीजी पथों पर सीएसएस वर्ग के नाम निर्दिष्ट करें


21

क्या इलस्ट्रेटर में एसवीजी फ़ाइलों को संपादित करने का एक तरीका है जहां आप प्रत्येक पथ के लिए सीएसएस वर्ग निर्दिष्ट कर सकते हैं?

मुझे इलस्ट्रेटर में पहले से ही पता है कि यदि आप लेयर नाम को वास्तविक नाम देते हैं, तो इलस्ट्रेटर उस नाम का उपयोग पथ के आईडी के रूप में करेगा, जो ठीक है यदि आप एक ही पृष्ठ पर एक से अधिक बार आइकन का पुन: उपयोग करने की योजना नहीं बनाते हैं।

मेरा वर्तमान समाधान केवल आईडी पद्धति का उपयोग करना है, लेकिन फिर बाद में अपने कोड संपादक में आईडी को कक्षाओं में परिवर्तित कर दूंगा, लेकिन जब भी मैं अपना एसवीजी स्प्राइट उत्पन्न करता हूं, हर बार ऐसा करना बहुत कष्टप्रद होता है।

यदि यह वर्तमान में इलस्ट्रेटर में संभव नहीं है, तो क्या कोई अन्य ऐप है जो आपको यह निर्दिष्ट करने की अनुमति देगा? या हो सकता है कि एक ग्रन्ट या गुलप पैकेज हो?

ऐसा लगता है कि आप इसे हैक के साथ इंकस्केप के साथ करने में सक्षम हो सकते हैं , इसलिए मैं इसे देख सकता हूं कि अगर कोई अन्य अच्छा समाधान नहीं है।


मुझे आईडी, या कक्षाओं के साथ निर्यात करने के लिए इलस्ट्रेटर नहीं मिल सकता है। मैं अपने एसवीजी के कोड को पसंद करना चाहता हूं, हालांकि यह उतना ही अजीब है, जितना कि मुझे पता नहीं है, लेकिन क्या आप जानते हैं कि आप इलस्ट्रेटर के किस संस्करण का उपयोग कर रहे हैं?
डैनियल

मैं एडोब इलस्ट्रेटर CC संस्करण का उपयोग कर रहा हूं 17.1.0
NerdCowboy

जवाबों:


5

मैं इसे ग्रंट कार्य के साथ करता हूं। "ग्रंट-टेक्स्ट-रिप्लेसमेंट" का उपयोग करके मैं एक कस्टम रेगुलर एक्सप्रेशन के माध्यम से अपने मिनीवेटेड SVG (svgmin) को पास करने में सक्षम हूं जो सभी गार्बल्ड क्लास रेफरेंस को उचित कक्षाओं के साथ बदल देता है।

इलस्ट्रेटर में, क्लास के लिए लेयर / ऑब्जेक्ट नाम घोषित करें = उदाहरण के लिए "ट्री" । यह Illustrator द्वारा id = "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 '';
                }
            }]
        }
    }

तब आप इस कार्य को अपने गंटफाइल के भीतर कह सकते हैं:

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

7

ऐसा लगता है कि Ian Dunn ने जो लिंक पोस्ट किया है वह आपका टिकट हो सकता है। यहाँ उस पृष्ठ का एक अंश दिया गया है :

एसवीजी निर्यात विकल्पों में, मैं शैली तत्वों का चयन करता हूं, और मैं अप्रयुक्त ग्राफिक शैलियाँ विकल्प शामिल करता हूं। यह एसवीजी दस्तावेज में सैंड स्टाइल और ब्लूस्की को सीएसएस शैलियों के रूप में घोषित करेगा।

यहाँ Illustrator CC द्वारा निर्मित SVG आउटपुट है:
<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>

इलस्ट्रेटर ग्राफिक स्टाइल को CSS के रूप में एक स्टाइल एलिमेंट में एक्सपोर्ट कर सकता है और उन्हें SVG कोड में कक्षाओं के माध्यम से लागू करता है। इस तरह से आप अपने निर्यात किए गए एसवीजी में कक्षाएं उत्पन्न कर सकते हैं। आप उन कक्षाओं को क्या करना चाहते हैं, इसके आधार पर, आप उन्हें दूसरी सीएसएस फ़ाइल में परिभाषित कर सकते हैं और निर्यात की गई एसवीजी से शैली की परिभाषा को हटा सकते हैं।

लिंक किए गए पृष्ठ में यह बताया गया है, लेकिन संपूर्णता के लिए, इलस्ट्रेटर केवल शैली तत्व और कक्षाएं उत्पन्न करेगा यदि आप CSS Properties: Style Elementउन्नत क्षेत्र में सेट करते हैं (आपको क्लिक करने की आवश्यकता हो सकती है More Options) SVG Options Dialog:सहेजें> प्रारूप: SVG> SVG विकल्प> अधिक विकल्प> CSS गुण: शैली तत्व

मैं यह भी ध्यान देता हूं कि उत्पन्न कोड कभी भी सभी स्थितियों के लिए बिल्कुल सही नहीं होगा। हाथ से लिखा गया कोड मनुष्यों के लिए हल्का और आसान हो जाता है (यदि वह आपके लिए जा रहा है) पढ़ने के लिए। मैं हाथ से SVG फ़ाइलों की सफाई और grunt-svgmin पर एक नज़र लेने पर विकिमीडिया उपयोगकर्ता Quibik के दस्तावेज़ पर पढ़ने की सलाह दूंगा


2

मैं सिर्फ इस मुद्दे पर भाग गया और निम्नलिखित समाधान पाया (इलस्ट्रेटर सीसी के लिए):

उन पथों को "ग्राफिकल स्टाइल्स" नाम दें, जिन्हें आप आंतरिक सीएसएस के साथ एसवीजी नाम देना और निर्यात करना चाहते हैं। उदाहरण के लिए, माई-आइकॉन नामक एक ग्राफिकल स्टाइल एक आंतरिक my-iconवर्ग को परिभाषित करेगा और उस वर्ग को उचित रास्तों पर लागू करेगा।

स्क्रीनशॉट के साथ उदाहरण:

एक नई ग्राफिक शैली बनाएँ: ग्राफिक शैली विकल्प

निर्यात के रूप में ... एसवीजी:

निर्यात के रूप में ... एसवीजी

आउटपुट:

<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. उपयुक्त सीएसएस गुण सेटिंग (देव आनंद) का उपयोग करें

CC: इलस्ट्रेटर निर्धारित कक्षाओं (स्मार्ट, उपयोगी) बनाने के लिए परिभाषित ग्राफिकल स्टाइल्स का उपयोग करता है


1

इलस्ट्रेटर 21.0.0 (2017) और संभवतः पहले के संस्करणों में:

  1. ग्राफिक स्टाइल्स पैनल में एक नई शैली बनाएँ
  2. नई शैली पर डबल क्लिक करें और इसे एक कस्टम नाम दें, जैसे "माय-स्टाइल"
  3. उस शैली को एक या अधिक तत्वों पर लागू करें
  4. एसवीजी निर्यात करें

एसवीजी में तत्वों को "माय-स्टाइल" मूल्य के साथ एक वर्ग विशेषता दी जाएगी। फिर आप शैलियों को ओवरराइड करने के लिए बाहरी सीएसएस का उपयोग कर सकते हैं।

ध्यान दें कि यदि आपकी शैली के नाम में कोई स्थान है, तो यह एक हाइफ़न में परिवर्तित हो जाएगा।


0

इसे करने का सरल तरीका, यह ग्रंट कार्य के समान है, लेकिन और भी आसान है:

उन सभी वस्तुओं के लिए जिन्हें आप कक्षा बनाना चाहते हैं, उदाहरण के लिए नाम दें: "myClassmainCircle" और "myClassmainStar"। सभी को बदलने के बाद: 'id = "myClass' को 'class ="'

परिणाम होगा: class = "mainCirle" वर्ग = "mainStar"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.