2012-09-01 38 views
6

मैं इलस्ट्रेटर में एक एसवीजी बनाने की कोशिश कर रहा हूं और पृष्ठ के ऊपर और नीचे भरने के लिए पृष्ठभूमि छवि के रूप में इसका उपयोग कर रहा हूं लेकिन अभी भी एक div के अंदर है 950 पीएक्स चौड़ा है, और मुझे परेशानी का कोई अंत नहीं है।एक एसवीजी बनाना जो ब्राउज़र की ऊंचाई पर स्केल करता है लेकिन एक सेट चौड़ाई है

<?xml version="1.0" encoding="utf-8"?> 
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 
width="950px" height="522.785px" viewBox="0 0 950 522.785" enable-background="new 0 0 950 522.785" xml:space="preserve"> 
<path fill-rule="evenodd" clip-rule="evenodd" d="M-1.076-16.544v560h45.512C31.152,180.379-1.076-16.544-1.076-16.544z"/> 
<path fill-rule="evenodd" clip-rule="evenodd" d="M951,543.456v-560h-45.512C936.375,205.063,951,543.456,951,543.456z"/> 
</svg> 

यह मेरा svg है, जैसा कि आप देख सकते हैं कि चित्रकार ने इसे चौड़ाई और ऊंचाई तत्व दिए हैं। मैं इन हटाया तो मैं उन्हें सीएसएस में सेट कर सकते हैं:

background-size: cover; 
background-size: 950px cover; 
background-size: 100% 100%; 
background-size: contain; 

लेकिन कुछ नहीं:

#middle{ 
        width: 950px; 
        margin: 0px; 
        height: 100%; 
        float: left; 
        display: block; 
        background: url(../images/l.svg) no-repeat left top #00aeef;      
} 

मैं svg से आकार को दूर करने और इस तरह के रूप सीएसएस में शैलियों जोड़ने के विभिन्न विभिन्न संयोजनों की कोशिश की है मुझे काम लगता है। कोई विचार? कुछ बुनियादी हो सकता है मैं बस svgs के बारे में समझ में नहीं आता? व्यवहार, जब मैं इसे कुछ भी प्रदर्शित करने के लिए प्राप्त कर सकता हूं, ऐसा लगता है कि यह या तो आकार में पूरी तरह से सेट हो जाता है, या आकार में सेट हो जाता है और फिर जब मैं खिड़की को छोटा करता हूं तो यह चौड़ाई को कम करता है और पहलू अनुपात को बनाए रखता है।

इसका यह तथापि बड़ा खिड़की की तरह लग रहे करने वाला है:

The black curves on both sides are shapes inside the blue element with 950px width

लेकिन जब मैं खिड़की ऊंचाई बड़ा यह disapears के पक्ष बनाने के लिए, इस में

background-size: cover; 

उपयोग कर रहा है सीएसएस, और svg में कोई आयाम नहीं है।

The right side has dissapeared

जब मैं तो जैसे एक सेट चौड़ाई जोड़ें:

background-size: 950px cover; 

यह प्रदर्शित करता है इस तरह:

Adding set width

और अगर मैं कर खिड़की में छोटा होता है यह करता है:

What the ? जो विशेष रूप से परेशान है।

संपादित

सीएसएस और इतने

सीएसएस

/* Main Containers */ 
.center{ 
        margin: 0px auto; 
        width: 1200px; 
        height: 100%; 
} 
#left{ 
        width: 150px; 
        height: 100%; 
        display: block; 
        float: left; 
        background: #000000; 
} 
#middle{ 
        width: 950px; 
        margin: 0px; 
        height: 100%; 
        float: left; 
        display: block; 
        background: url(../images/l.svg) no-repeat left top #00aeef; 
        background-size: cover; 

} 
#right{ 
        width: 100px; 
        height: 100%; 
        display: block; 
        float: left; 
        background: #000000; 
} 

एचटीएमएल

<body> 
    <div class="center"> 


     <div id="left"> 
      <!-- Header --> 

      <!-- END Header --> 

     </div> 


     <!-- Nav --> 
     <div id="nav"> 

     </div> 
     <!-- END Nav --> 

     <div id="middle"> 


     </div> 

     <div id="right"> 

     </div> 
     <!-- Footer --> 

     <!-- END Footer --> 

    </div> 
</body> 

उत्तर

5

preserveAspectRatio="none" 

का उपयोग कर अपनी समस्या

के लिए एक समाधान एसवीजी फ़ाइल

में मिले तो जैसे:

<?xml version="1.0" encoding="utf-8"?> 
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" 
viewBox="0 0 950 522.785" enable-background="new 0 0 950 522.785" preserveAspectRatio="none" > 
<path fill-rule="evenodd" clip-rule="evenodd" d="M-1.076-16.544v560h45.512C31.152,180.379-1.076-16.544-1.076-16.544z"/> 
<path fill-rule="evenodd" clip-rule="evenodd" d="M951,543.456v-560h-45.512C936.375,205.063,951,543.456,951,543.456z"/> 
</svg> 

आकार निकाल दिए जाते हैं पूरी तरह से svg से। व्यूबॉक्स को हटाएं या सक्षम बैकग्राउंड गुणों को न हटाएं - वे महत्वपूर्ण हैं।

Css तो जैसे:

#middle{ 
        width: 950px; 
        margin: 0px; 
        height: 100%; 
        float: left; 
        display: block; 
        background: url(../images/l.svg) no-repeat left top #00aeef; 
        background-size: 100% 100%;     
} 

* यहाँ परिणाम *

Full screen

बड़े खिड़की

Small screen

छोटे वाई है ndow

+0

तो यह है कि आप इसे कैसे करते हैं। – bluefantail

+0

अब तक आईव ने Google क्रोम 21, और एफएफ 14 में काम करने का परीक्षण किया – bluefantail

0

उपयोगतरह HTML चिंतित दिखता है के बाकीसीएसएस संपत्ति।इस प्रयास करें:

#middle{ 
        max-width: 950px; 
        margin: 0px; 
        height: 100%; 
        float: left; 
        display: block; 
        background: url(../images/l.svg) no-repeat left top #00aeef; 
        background-size: 950px 100%;     
} 
+0

हाय चीयर्स, किस तत्व पर? – bluefantail

+1

युक्त 'div'। इसके अलावा, एक div 'div', या सिर्फ 'body' के अंदर युक्त div है? –

+0

बस मेरा जवाब अपडेट किया गया। उसकी कोशिश करो। –

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