2015-11-22 26 views

回答

2

你可以计算使用http://www.w3.org/TR/SVG/text.html#__svg__SVGTextContentElement__getComputedTextLength 文本的长度,然后你可以调整依赖于正文长度的矩形。当onkeydown事件触发时,您可以调用resize函数。

下面是在文本长度按时间间隔更改时调整矩形大小的示例。

<svg id="svg" xmlns="http://www.w3.org/2000/svg" version="1.1"> 
    <rect width="100" height="100" style="fill:rgb(255,255,255);stroke-width:3;stroke:rgb(0,0,0)" ></rect> 
    <text x="20" y="40">123</text> 
</svg> 

<script> 
    var textElement = document.getElementsByTagName('text')[0]; 
    var rectElement = document.getElementsByTagName('rect')[0]; 

    resizeRect(); 

    setInterval(resizeRect, 1000); 

    function resizeRect(){ 
     textElement.textContent += 0 
     var textLength = textElement.getComputedTextLength(); 
     rectElement.setAttribute("width", 50 + textLength) 
    } 

</script> 

你可以在这里找到一个小提琴:https://jsfiddle.net/0dvu604g/

+0

太感谢你了,这是我所期待的。我可以在某些字符之后换行吗? –

+0

您可以在这里阅读有关SVG中多行文本的信息:http://www.w3.org/TR/SVG/text.html#Introduction –

+0

谢谢。这很有帮助。 –