2011-12-30 15 views
5

क्या एसवीजी <tspan> तत्व पृष्ठभूमि रंग देना संभव है? यदि नहीं, तो इसे अनुकरण करने का सबसे अच्छा तरीका क्या होगा?tspan तत्व का पृष्ठभूमि रंग

मेरा लक्ष्य टेक्स्ट पृष्ठभूमि रंग देना है, और मुझे लगा कि <tspan> तत्व भरना सही होगा - वे टेक्स्ट टेक्स्ट (<tspan> तत्व) पहले से ही "रूपरेखा" रूपरेखा करते हैं जो मल्टीलाइन टेक्स्ट में पंक्तियों का प्रतिनिधित्व करते हैं।

उदाहरण के साथ मैं काम कर रहा हूँ:

<text x="100" y="100" font-size="30"> 
    <tspan>hello</tspan> 
    <tspan x="100" dy="1.2em">world</tspan> 
</text> 

मैंने कोशिश की "भरने" विशेषता लेकिन यह पाठ के भरने (रंग), नहीं इसके पीछे क्षेत्र को प्रभावित कर रहा है:

<tspan fill="yellow">hello</tspan> 

<style type="text/css">tspan { background-color: yellow }</tspan> 

कि ..लेकिन (कम से कम क्रोम 17 और Firefox में काम नहीं करता है: मैं भी सीएसएस के माध्यम से पृष्ठभूमि रंग स्थापित करने की कोशिश की 12)। कुछ मैं चाहते हैं - एक <rect> तत्व एक ही स्थान पर तैनात बनाने के अलावा

<g fill="yellow"><tspan>hello</tspan></g> 
<tspan><g fill="yellow">hello</g></tspan> 

: "भरने" के साथ <g> में

रैपिंग tspan (या खुद पाठ <g> में) या तो काम नहीं करता है इससे बचें - क्या यह हासिल करने का कोई और तरीका है?

उत्तर

5

एक रेक्ट शायद सबसे अच्छा तरीका है कि (यह मानते हुए कि आप केवल पाठ का सरलतम रूपों के साथ काम कर रहे हैं) करने के लिए।

टीस्पानों में एसवीजी 1.1 में स्वयं "पृष्ठभूमि" नहीं है, पृष्ठभूमि जो भी tspan से पहले चित्रित हो जाती है। विचार करने के लिए कई मामले हैं, जैसे मामला जहां टेक्स्ट एक टेक्स्टपैथ के अंदर होता है जिसमें सर्कल का आकार होता है। यह भी ध्यान रखें कि यह सभी मामलों में निरंतर आयताकार के रूप में उतना आसान नहीं है, एक एसएसपीएन को घुमाया जा सकता है, घुमाया जा सकता है और ट्रांसफॉर्म, ग्लिफ पोजिशनिंग इत्यादि के कारण कई अंतरण और गैर-अंतरंग आकारों में विभाजित किया जा सकता है।

एक और तरीका है I ऐसा सोच सकता है कि स्क्रिप्टिंग के बिना ऐसा किया जाएगा, लेकिन फिर आपको पहले स्ट्रिंग की चौड़ाई को जानना होगा (उदाहरण के लिए एक मोनोस्पेस्ड फ़ॉन्ट का उपयोग करके)। यदि आपके पास ऐसा है तो आप एहेम फ़ॉन्ट का उपयोग करके एक और tspan तत्व जोड़ सकते हैं, इसे दस्तावेज़ में अन्य tspan से पहले रखकर उसे उसी x, y स्थिति को tspan के रूप में देकर आप "पृष्ठभूमि" देना चाहते हैं।

अन्यथा ऐसा करने का तरीका स्क्रिप्टिंग के माध्यम से है, और आयतों को जोड़ना (या एहेम जैसे फ़ॉन्ट के साथ tspans)।

+0

धन्यवाद, मैं फिर रेक्ट के साथ जा रहा हूँ। अब मैं देख सकता हूं कि पाठ पृष्ठभूमि निर्दिष्ट क्यों समस्याग्रस्त हो सकती है। – kangax

2

एसवीजी सीधे छवि पृष्ठभूमि रंग निर्दिष्ट करने का समर्थन नहीं करता है ... लेकिन आप व्यूबॉक्स विशेषता (जटिल) के चार मानों को समायोजित कर सकते हैं। मुझे पता है कि यह कुछ ऐसा है जिसे आप टालना चाहते हैं, लेकिन सीएसएस आपकी मदद नहीं करेगा।

... या आप GetBBox और getCTM का उपयोग कर सकते हैं ... यह आपको घुमावदार पाठ के लिए फायदे देगा। उदाहरण: http://srufaculty.sru.edu/david.dailey/svg/getCTM.svg

+0

एसवीजी रूट एसवीजी तत्व पर 'पृष्ठभूमि' की अनुमति देता है, और एसवीजी टिनी 1.2 में 'व्यूपोर्ट-फिल' और 'व्यूपोर्ट-अस्पष्टता' भी है। लेकिन यह सच है कि कुछ भी नहीं है जो स्वचालित रूप से एक tspan भर जाएगा, आपको वर्तमान में स्क्रिप्ट के साथ यह करना होगा। मुझे समझ में नहीं आता कि क्यों 'व्यूबॉक्स' लागू होगा। –

+0

@Erik, सामान्य रूप से, छोटे के लिए ब्राउज़र समर्थन कितना मजबूत है? सामान्य रूप से – Alex

+2

?कुछ हिस्सों का समर्थन किया जाता है, कुछ नहीं हैं :) 'व्यूपोर्ट-फिल' इस समय व्यापक रूप से समर्थित नहीं है (ओपेरा के लिए इसका समर्थन है), लेकिन अन्य चीजें हैं जो कर्षण प्राप्त कर रही हैं, जैसे 'वेक्टर-इफेक्ट' और ' फोकस करने योग्य 'जो कई ब्राउज़र इंजनों में समर्थित हैं। –

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