Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在svg中沿路径对齐组(而不是文本)?_Javascript_Svg_Alignment - Fatal编程技术网

Javascript 如何在svg中沿路径对齐组(而不是文本)?

Javascript 如何在svg中沿路径对齐组(而不是文本)?,javascript,svg,alignment,Javascript,Svg,Alignment,假设我已经通过编程创建了一个圆和一些文本, 我想沿着圆对齐。 我可以使用textPath元素来实现这一点 此外,我还有一个矩形图像或任何svg组, 我也希望与圆圈对齐 下图中的红色矩形只是一个示例;实际上,我希望能够将任意svg组作为chord图节点上的图像标签对齐 然而,textPath似乎只适用于文本元素 =>是否有类似的方法适用于组元素 或者我需要手动计算组的转换吗 从圆的某个切线开始 一种解决方法是用一个字母和一个字母创建一些隐藏文本 和我的团队一样大。。。对齐它并抓住它的变换。然而,这

假设我已经通过编程创建了一个圆和一些文本, 我想沿着圆对齐。 我可以使用textPath元素来实现这一点

此外,我还有一个矩形图像或任何svg组, 我也希望与圆圈对齐 下图中的红色矩形只是一个示例;实际上,我希望能够将任意svg组作为chord图节点上的图像标签对齐

然而,textPath似乎只适用于文本元素

=>是否有类似的方法适用于组元素

或者我需要手动计算组的转换吗 从圆的某个切线开始

一种解决方法是用一个字母和一个字母创建一些隐藏文本 和我的团队一样大。。。对齐它并抓住它的变换。然而,这感觉很难看

此外,我有一个矩形图像或任何svg组,我 还希望与圆形对齐,请参见中的红色矩形 下面的示例图像

然而,textPath似乎只适用于文本元素

您可以使用矩形unicode字符&9646

在这种情况下,您可以将其与其他单词一起包含在一个textPath命令中

你好,世界&9646; 此外,我有一个矩形图像或任何svg组,我 还希望与圆形对齐,请参见中的红色矩形 下面的示例图像

然而,textPath似乎只适用于文本元素

您可以使用矩形unicode字符&9646

在这种情况下,您可以将其与其他单词一起包含在一个textPath命令中

你好,世界&9646; 正如@Paul LeBeau所评论的:


不,没有自动的方法可以做到这一点。你必须定位它 你自己

考虑使用绝对定位将svg图像添加到文本中

因为SVG中的任何文本都是矢量对象,所以它具有绝对坐标x,y,作为单词的第一个字符和最后一个字符

使用此选项,您可以将图标或任何其他矢量图像定位到文本的开头或结尾

我把图标放在标签里,然后用标签把它放在单词的末尾

你好Wordl 正如@Paul LeBeau所评论的:


不,没有自动的方法可以做到这一点。你必须定位它 你自己

考虑使用绝对定位将svg图像添加到文本中

因为SVG中的任何文本都是矢量对象,所以它具有绝对坐标x,y,作为单词的第一个字符和最后一个字符

使用此选项,您可以将图标或任何其他矢量图像定位到文本的开头或结尾

我把图标放在标签里,然后用标签把它放在单词的末尾

你好Wordl
作为起点,这里是我提到的解决方法。 它使用一些不可见的占位符文本,并使用

placeHolder.getBoundingClientRect();

结果只是取决于字体大小和占位符字符的近似值

var svg=document.getElementById'svg'; var text=document.createElement'text'; setAttribute'fill','black'; svg.appendChildtext; var placeHolder=document.getElementById'placeHolder'; var placeHolder bounds=placeHolder.getBoundingClientRect; 变量角度=占位符.getRotationOfChar0; var group=document.getElementById'my-group'; var groupBounds=group.getBoundingClientRect; var-dx=0//groupBounds.width/2; var dy=-groupBounds.height; var x=占位符边界.x; var y=占位符边界.y; 变量转换='translate'+x+'、'+y+'+ “旋转”+角度+“”+ “翻译”+dx+,“+dy+; setAttribute'transform',transform; 你好,世界-
作为起点,这里是我提到的解决方法。 它使用一些不可见的占位符文本,并使用

placeHolder.getBoundingClientRect();

结果只是取决于字体大小和占位符字符的近似值

var svg=document.getElementById'svg'; var text=document.createElement'text'; setAttribute'fill','black'; svg.appendChildtext; var placeHolder=document.getElementById'placeHolder'; var placeHolder bounds=placeHolder.getBoundingClientRect; 变量角度=占位符.getRotationOfChar0; var group=document.getElementById'my-group'; var groupBounds=group.getBoundingClientRect; var-dx=0//groupBounds.width/2; var dy=-groupBounds.height; var x=占位符边界.x; var y=占位符边界.y; 变量转换='translate'+x+'、'+y+'+ “旋转”+角度+“”+ “翻译”+dx+,“+dy+; setAttribute'transform',transform; 你好,世界-
谢谢你的建议。红色
矩形被认为是最小的例子,用来说明任务。实际上,我想允许任意svg内容作为chord图节点上的图像标签。不过,您的解决方案可能会对其他人有所帮助。谢谢您的建议。红色矩形被认为是最小的示例,用于说明任务。实际上,我想允许任意svg内容作为chord图节点上的图像标签。然而,你的解决方案可能会对其他人有所帮助。不,没有自动的方法可以做到这一点。你必须自己定位。不,没有自动的方法。你必须自己定位。