Div एलिमेंट में svg के नीचे के अतिरिक्त स्थान से कैसे छुटकारा पाएं


93

यहाँ समस्या का एक चित्रण है (फ़ायरफ़ॉक्स और क्रोम में परीक्षण):

<div style="background-color: red;"><svg height="100px" width="100" style="background-color: blue;"></svg></div>

JSFiddle पर देखें

नीले रंग redके divनीचे के अतिरिक्त स्थान पर ध्यान दें svg

पहले से ही सेटिंग paddingऔर marginदोनों तत्वों की कोशिश की 0, लेकिन कोई भाग्य के साथ।


छवियों के साथ एक समान समस्या से संबंधित लगता है, जैसे stackoverflow.com/questions/7774814/…
डैनियल

जवाबों:


182

आप की जरूरत है display: block;अपने पर svg

<svg style="display: block;"></svg>

इसका कारण यह है कि इनलाइन-ब्लॉक एलिमेंट्स (जैसे <svg>और <img>) टेक्स्ट बेसलाइन पर बैठते हैं। आपके द्वारा देखा जा रहा अतिरिक्त स्थान वर्ण अवरोह ('y', 'g' आदि पर पूंछ को समायोजित करने के लिए छोड़ा गया स्थान) है।

vertical-align:topयदि आप इसे रखने की जरूरत है inlineया आप भी उपयोग कर सकते हैंinline-block


गजब का। तो क्या सभी इनलाइन तत्व तल पर सफेद स्थान जोड़ते हैं?
क्लैप्स

2
व्याख्या यह है कि inline-blockतत्व (जैसे <svg>और <img>) पाठ आधार रेखा पर बैठते हैं। आपके द्वारा देखा जा रहा अतिरिक्त स्थान वर्ण अवरोह ('y', 'g' आदि पर पूंछ को समायोजित करने के लिए छोड़ा गया स्थान) है।
पॉल लेबेउ

1
मैं चाहता हूँvertical-align:top
जॉन जिओ

मुझे यकीन था कि अतिरिक्त जगह के साथ कुछ करना था line-height, लेकिन line-height: 0svg और / या उसके कंटेनर पर सेटिंग करने से कोई फर्क नहीं पड़ा। केवल display: blockइसे हल किया। यदि आप एक बड़े एसवीजी पर काम कर रहे हैं तो यह एक ऐसा हो गया है क्योंकि आप इनलाइन के बारे में कभी नहीं सोचेंगे। यदि आपके पास थोड़ा आइकन है, हालांकि, यह समझ में आता है।
देवघर

display: blockमेरे लिए काम नहीं किया, लेकिन vertical-alignकिया
जे

12

svgएक inlineतत्व है। inlineतत्व सफेद-स्थान छोड़ते हैं।

उपाय:

जोड़े display:blockको svg, या माता-पिता के मेकअप ऊंचाई के रूप में ही div svg

यहाँ डेमो।




1

एक पर जोड़ने और उपयोग height:100pxकरने का प्रयास करें :divheight="100%"svg

<div style="background-color:red;height:100px">
    <svg height="100%" width="100" style="background-color:blue;"></svg>
</div>

4
आपके कमेंट के लिए धन्यवाद। यह ठीक काम करता है, लेकिन मुश्किल हो जाता है जब कोई svgअग्रिम में ऊंचाई नहीं जानता है ।
डेनियल

1

बस मुख्य div तत्व के लिए ऊंचाई जोड़ें

<div style="background-color: red;height:100px"><svg height="100px" width="100" style="background-color: blue;"></svg></div>

0

अपनी शैली बदलें

शैली = "पृष्ठभूमि-रंग: लाल; रेखा-ऊँचाई: 0;"

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