答案 0 :(得分:2)
您可以使用http://www.w3.org/TR/SVG/text.html#__svg__SVGTextContentElement__getComputedTextLength计算文字的长度 然后你可以调整取决于textLength的rect的大小。你可以在onkeydown事件触发时调用resize函数。
以下是当文本长度按间隔更改时调整rect的大小的示例。
<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/