2012-02-21 15 views
24

मैं एचटीएमएल पेज में कुछ एसवीजी को इस तरह से आकार देना चाहता हूं जैसे स्वचालित रूप से आकार बदलता है (एसवीजी, सीएसएस, या जेएस का उपयोग करके) पृष्ठ का आकार बदलता है, जबकि अभी भी संरक्षित है मूल पहलू अनुपात।विंडो आकार बदलने पर एचटीएमएल में एम्बेडेड एक एसवीजी ऑटोस्केलिंग

उदाहरण के लिए

, W3Schools से एक उदाहरण का उपयोग करते हुए:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> 
    <circle cx="100" cy="50" r="40" stroke="black" 
    stroke-width="2" fill="red"/> 
</svg> 

यह एसवीजी चौड़ाई = खिड़की चौड़ाई के 5% सेट करने के लिए, और ऊंचाई के अनुपात में बढ़ाया है संभव है?

मैंने preserveAspectRatio="xMinYMin meet" सहित कुछ चीजों की कोशिश की है और <div> कंटेनर के भीतर आयामों को 100% पर सेट किया है, लेकिन इसे अभी तक काम नहीं मिला है।

कोई सुझाव?

उत्तर

25

आप अपने एसवीजी मूल तत्व पर एक viewBox -attribute की जरूरत है, जो एसवीजी छवि का कुल आकार को परिभाषित करेंगे:

<svg version="1.1" viewBox="0 0 300 185"> 

अब आप सीएसएस और यह के माध्यम से चौड़ाई या छवि की ऊंचाई सेट कर सकते हैं पूरी तरह से स्केल करेंगे।

+0

यह चाल है। क्या आप जानते हैं कि व्यूबॉक्स के लिए पिछले दो पैरामीटर कैसे प्रबंधित किए जाते हैं? उन्हें बढ़ाना छवि के आकार को * घटाना * लगता है। –

+3

वे संख्याएं आपकी छवि का उपयोग चौड़ाई और ऊंचाई हैं। ऊपर से आपके उदाहरण में यह सर्कल + त्रिज्या होगा: सीएक्स + आर = चौड़ाई (140) और cy + r = ऊंचाई (9 0)। आपकी सबसे अच्छी पसंद इंकस्केप जैसे ग्राफिक्स सॉफ़्टवेयर के माध्यम से छवि को सहेजना है, जो समग्र आकारों की गणना करेगी और फ़ाइल में व्यूबॉक्स-विशेषता लिखें। यदि इंकस्केप का उपयोग करते हैं, तो सुनिश्चित करें कि आप "अनुकूलित इंकस्केप एसवीजी" का चयन करें, जिसके परिणामस्वरूप बहुत छोटा फ़ाइल आकार और समझने योग्य XML स्रोत कोड होगा। – feeela

+0

यह उत्तर अभी मेरे दिन बचा है! – qed

संबंधित मुद्दे