Javascript 如何在svg中沿路径对齐组(而不是文本)?
假设我已经通过编程创建了一个圆和一些文本, 我想沿着圆对齐。 我可以使用textPath元素来实现这一点 此外,我还有一个矩形图像或任何svg组, 我也希望与圆圈对齐 下图中的红色矩形只是一个示例;实际上,我希望能够将任意svg组作为chord图节点上的图像标签对齐 然而,textPath似乎只适用于文本元素 =>是否有类似的方法适用于组元素 或者我需要手动计算组的转换吗 从圆的某个切线开始 一种解决方法是用一个字母和一个字母创建一些隐藏文本 和我的团队一样大。。。对齐它并抓住它的变换。然而,这感觉很难看 此外,我有一个矩形图像或任何svg组,我 还希望与圆形对齐,请参见中的红色矩形 下面的示例图像 然而,textPath似乎只适用于文本元素 您可以使用矩形unicode字符&9646 在这种情况下,您可以将其与其他单词一起包含在一个textPath命令中 你好,世界&9646; 此外,我有一个矩形图像或任何svg组,我 还希望与圆形对齐,请参见中的红色矩形 下面的示例图像 然而,textPath似乎只适用于文本元素 您可以使用矩形unicode字符&9646 在这种情况下,您可以将其与其他单词一起包含在一个textPath命令中 你好,世界&9646; 正如@Paul LeBeau所评论的:Javascript 如何在svg中沿路径对齐组(而不是文本)?,javascript,svg,alignment,Javascript,Svg,Alignment,假设我已经通过编程创建了一个圆和一些文本, 我想沿着圆对齐。 我可以使用textPath元素来实现这一点 此外,我还有一个矩形图像或任何svg组, 我也希望与圆圈对齐 下图中的红色矩形只是一个示例;实际上,我希望能够将任意svg组作为chord图节点上的图像标签对齐 然而,textPath似乎只适用于文本元素 =>是否有类似的方法适用于组元素 或者我需要手动计算组的转换吗 从圆的某个切线开始 一种解决方法是用一个字母和一个字母创建一些隐藏文本 和我的团队一样大。。。对齐它并抓住它的变换。然而,这
不,没有自动的方法可以做到这一点。你必须定位它 你自己 考虑使用绝对定位将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图节点上的图像标签。然而,你的解决方案可能会对其他人有所帮助。不,没有自动的方法可以做到这一点。你必须自己定位。不,没有自动的方法。你必须自己定位。