在 SVG 矩形内环绕文本。当用户尝试连续输入文本时,我想调整 svg 矩形的大小
Wrap text inside SVG rectangle. I want to resize the svg rectangle when user tries to enter the text continuously
我想要下面这样的东西。最初只有一个单词,当用户输入多个单词时,框的大小会增加。我怎样才能做到这一点?有人知道如何进行吗?
您可以使用 http://www.w3.org/TR/SVG/text.html#__svg__SVGTextContentElement__getComputedTextLength 计算文本的长度
然后您可以根据 textLength 调整矩形的大小。您可以在 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>
您可以在此处找到 fiddle:https://jsfiddle.net/0dvu604g/
我想要下面这样的东西。最初只有一个单词,当用户输入多个单词时,框的大小会增加。我怎样才能做到这一点?有人知道如何进行吗?
您可以使用 http://www.w3.org/TR/SVG/text.html#__svg__SVGTextContentElement__getComputedTextLength 计算文本的长度 然后您可以根据 textLength 调整矩形的大小。您可以在 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>
您可以在此处找到 fiddle:https://jsfiddle.net/0dvu604g/