SVG 文本;将 tspans 左对齐,文本父级右对齐
SVG text; align tspans to the left having text parent aligned to the right
美好的一天。知道 x 和 y,我需要将多行 <text>
的右边缘与其对齐。问题是其中 <tspan>
s 的内容应该向左对齐。 X 和 Y 坐标(有一些偏移)用作 <line>
.
的起始坐标
像这样:
是否有可能使用 svg 的属性实现该行为 and/or css?
我只是想通过getBBox()
得到第一个<tspan>
的宽度,然后用它作为直线的起始坐标,用[=16=把它加到x上] 在父 <text>
上,但它是一个运行时解决方案:(
这是一个简化的片段:
<svg viewBox="0 0 500 500">
<!-- Knowing x and y to translate -->
<g transform="translate(200, 200)">
<text
x="0"
y="0"
fill="#000"
text-anchor="end"
dominant-baseline="hanging"
>
<tspan
font-size="20"
x="0"
>
Title
</tspan>
<tspan
font-size="15"
x="0"
dy="20"
>
Subtitle
</tspan>
<tspan
font-size="10"
x="0"
dy="15"
>
Description
</tspan>
</text>
</g>
<line
stroke="#f11"
stroke-width="3"
x1="205"
y1="210"
x2="305"
y2="210"
/>
</svg>
答案是否定的
SVG 没有任何 native 自动布局工具,可让您随心所欲。它希望您知道每行文本的确切位置。
您需要按照您的建议使用 Javascript。
美好的一天。知道 x 和 y,我需要将多行 <text>
的右边缘与其对齐。问题是其中 <tspan>
s 的内容应该向左对齐。 X 和 Y 坐标(有一些偏移)用作 <line>
.
像这样:
是否有可能使用 svg 的属性实现该行为 and/or css?
我只是想通过getBBox()
得到第一个<tspan>
的宽度,然后用它作为直线的起始坐标,用[=16=把它加到x上] 在父 <text>
上,但它是一个运行时解决方案:(
这是一个简化的片段:
<svg viewBox="0 0 500 500">
<!-- Knowing x and y to translate -->
<g transform="translate(200, 200)">
<text
x="0"
y="0"
fill="#000"
text-anchor="end"
dominant-baseline="hanging"
>
<tspan
font-size="20"
x="0"
>
Title
</tspan>
<tspan
font-size="15"
x="0"
dy="20"
>
Subtitle
</tspan>
<tspan
font-size="10"
x="0"
dy="15"
>
Description
</tspan>
</text>
</g>
<line
stroke="#f11"
stroke-width="3"
x1="205"
y1="210"
x2="305"
y2="210"
/>
</svg>
答案是否定的
SVG 没有任何 native 自动布局工具,可让您随心所欲。它希望您知道每行文本的确切位置。
您需要按照您的建议使用 Javascript。