2012-06-12 14 views
6

के केंद्र में पाठ कैसे रखें एसवीजी को प्रतिपादित करने के लिए मैं jQuery एसवीजी प्लगइन का उपयोग कर रहा हूं। और, अब मैं प्रत्येक पथ और बहुभुज में पाठ जोड़ना चाहता हूं। jsFiddle पर आप प्लगइन द्वारा जेनरेट मार्कअप देख सकते हैं।एसवीजी पथ

पाठ बनाने के लिए मैं निम्नलिखित कोड लिखा है:

var svgg = $("#rsr").svg('get'); 
var texts = svgg.createText(); 
svgg.textpath($("#Layer_x0020_1"),id, texts.string('We go '). 
    span('up', { dy: -30, fill: 'red' }).span(',', { dy: 30 }). 
    string(' then we go down, then up again')); 

jsFiddle पर कोड आप देख सकते हैं कि textpath टैग मौजूद है में, लेकिन वह दिखाई नहीं देता है। प्रत्येक पथ के केंद्र में पाठ कैसे जोड़ें?
धन्यवाद।

+0

"प्रत्येक पथ के केंद्र" के साथ आपका क्या मतलब है? क्या आपका मतलब है कि आप आकार के बीच में पाठ चाहते हैं, या आप पथ पर केंद्रित पाठ चाहते हैं लेकिन अभी भी पथ का अनुसरण कर रहे हैं (कुल पथ लंबाई का लगभग 50% केंद्रित)? –

+0

मैं आकार के बीच में पाठ चाहता हूँ। – user1260827

+0

ठीक है, तो कृपया ऊपर दिए गए अपने प्रश्न को अपडेट/स्पष्टीकरण दें। –

उत्तर

12

एक आकार की चोटी पर एक सीधी रेखा में पाठ रखने के लिए, boundingbox देखने के बीच में:

http://jsfiddle.net/dYuAA/114/

यह सिर्फ टेक्स्ट रखने का विकल्प कुछ जावास्क्रिप्ट कहते हैं।

function addText(p) 
{ 
    var t = document.createElementNS("http://www.w3.org/2000/svg", "text"); 
    var b = p.getBBox(); 
    t.setAttribute("transform", "translate(" + (b.x + b.width/2) + " " + (b.y + b.height/2) + ")"); 
    t.textContent = "a"; 
    t.setAttribute("fill", "red"); 
    t.setAttribute("font-size", "14"); 
    p.parentNode.insertBefore(t, p.nextSibling); 
} 

var paths = document.querySelectorAll("path"); 
for (var p in paths) 
{ 
    addText(paths[p]) 
} 

उपरोक्त केवल पथ तत्वों को देखता है, लेकिन आप चयनकर्ता को जो कुछ भी चाहिए उसे शामिल करने के लिए ट्विक कर सकते हैं।

+0

ऐसा लगता है कि jsfiddle उदाहरण अब काम नहीं कर रहा है। –

+1

अब काम करना चाहिए। –

+0

बहुत बढ़िया धन्यवाद! –

1

यहां कुछ समस्याएं हैं।

ए) एसवीजी केस संवेदनशील है इसलिए यह टेक्स्टपैथ है और टेक्स्टपैथ नहीं है।

ख) textPath एक <text> तत्व में संलग्न किया जा करने के लिए वैध

यहाँ अपने jsFiddle fixed up है हो गया है।

+0

'टेक्स्टपाथ' ठीक काम करता है। लेकिन, Jquery एसवीजी '' तत्व और 'xlink' नहीं जोड़ता है। इसके अलावा, मैं केंद्र में पाठ का पता लगाना चाहता हूँ। – user1260827

+0

xlink वैकल्पिक है। startOffset = "50" टेक्स्ट-एंकर = "मध्य" इसे केंद्रित करेगा। मैंने jsFiddle को स्टार्टऑफसेट और टेक्स्ट-एंकर विशेषताओं के साथ अद्यतन किया है। –

+0

फिडल काम नहीं करता है :-( – foobarbecue

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