当前位置: 首页 > 知识库问答 >
问题:

根据其内容调整SVG元素的大小

马业
2023-03-14

我想调整SVG元素的尺寸以适应其内容。

JSfiddle:http://jsfiddle.net/4pD9N/

这里我有一个例子。SVG应该“收缩”以适应每边10像素的元素边距。换句话说:我想为未使用的空间裁剪svg...

我知道我必须使用getBBox。但是我如何计算总宽度和总高度呢?

共有2个答案

秦涵映
2023-03-14
var svg = document.getElementsByTagName("svg")[0];
var bb=svg.getBBox();
var bbx=bb.x;
var bby=bb.y;
var bbw=bb.width;
var bbh=bb.height;
var vb=[bbx,bby,bbw,bbh];
svg.setAttribute("viewBox", vb.join(" ") );
狄雅珺
2023-03-14

默认情况下,SVG图形的原点与容器的原点相同。这意味着图形的(0,0)位于SVG元素的左上角。要使内容居中,应相对于容器平移图形。可以通过修改SVG元素的viewBox属性(需要四个值:“minx miny width height”)来实现,该属性与方法的结果相关。一个活生生的例子http://jsfiddle.net/3cp3c/.

svg.setAttribute("viewBox", (bbox.x-10)+" "+(bbox.y-10)+" "+(bbox.width+20)+" "+(bbox.height+20));
svg.setAttribute("width", (bbox.width+20)  + "px");
svg.setAttribute("height",(bbox.height+20) + "px");
 类似资料:
  • 问题内容: 我正在开发类似iGoogle的应用程序。使用iframe显示其他应用程序(在其他域上)的内容。 如何调整iframe的大小以适合iframe内容的高度? 我试图破译Google使用的javascript,但它被混淆了,到目前为止,在网络上搜索毫无结果。 更新: 请注意,内容是从其他域加载的,因此适用同源策略。 问题答案: 我们遇到了这类问题,但与您的情况略有不同我们向其他域上的网站提供

  • 问题内容: 在以Swift编写的iOS应用程序中使用自动布局时,如何根据内容调整textField的大小? 加载视图时以及用户键入时,文本字段将根据需要调整大小以适合其内容。 理想情况下,文本字段将在某个点(例如6行)处停止调整大小,并变为可滚动。 问题答案: 您必须使用而不是。 然后,您可以使用该方法。 但是首先,您必须知道一条线的高度。您可以使用以下方法获取该信息: 之后,只需在方法内部调用方

  • 我正在编写一个JavaFX程序,制作一个随机颜色的网格。当调整窗口大小时,网格应该调整到尽可能大,同时仍然保持正方形,并在底部为文本留出空间。 一切工作正常,但我遇到的问题是,当调整GridPane的大小时,它会留下一些空隙。调整窗口大小时,间隙的大小会略有变化。有人能帮我找出如何消除这些差距吗?我包括完整的代码。它不太长。谢谢你。

  • 问题内容: 我需要一个textarea,在框中输入文字,它会根据需要增加长度,以避免必须处理滚动条,并且在删除文本后需要缩小!我不想沿着mootools或jquery路线走,因为我有一个轻量级的表单。 问题答案: 您可以通过设置为,然后读取属性来检查内容的高度: 它可以在Firefox 3,IE 7,Safari,Opera和Chrome下运行。

  • Java硒测试新进展 我正试图在网页上找到一个数字并点击它,因为我希望能够在列表上选择正确的数字。或者获取所述数字的位置,这样我就可以通过单击第一个元素来选择该行。 这就是我需要“精确定位”的那个 但我唯一拥有的是Xpath(),它里面是我需要的数字“” 有什么想法或提示吗?谢谢你的回答。

  • 所以我正在用svg开发一个地图,我希望能够根据用户输入缩放到svg中的预定义区域(一个州或国家)。我找到了一个教程,该教程既能做到这一点,又能对其进行动画化,在这里:https://css-tricks.com/interactive-data-visualization-animating-viewbox/ith codepen在这里:https://codepen.io/sdras/pen/5