You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SVG Text元素内设置贯穿式分隔线替代竖线符号

替换SVG文本中的竖线分隔符为贯穿高度的分隔线

要把竖线|替换成真正的贯穿高度分隔线,不能再用文本字符实现,而是要使用SVG的图形元素(比如<line>或<rect>)——因为文本字符的高度受字体限制,无法完全覆盖文本的上下高度。具体实现步骤如下:

1. 移除原分隔符文本

首先删掉原来的<tspan class="t-span-seperator">|</tspan>元素,这部分是用文本字符模拟的分隔线。

2. 添加SVG图形作为分隔线

SVG的<text>元素内部不能嵌套图形元素,所以要把分隔线放在<text>的同级位置,通过坐标计算对齐文本的中心和高度。

修改后的完整SVG片段示例

<g>
  <!-- 原文本:移除竖线tspan,调整图标tspan的dx值以留出分隔线空间 -->
  <text x="-50" y="-15" dy=".6em" style="dominant-baseline: central;">
    <tspan class="t-text-seperator" dx="0em">Java Enterprise Edition</tspan>
    <tspan dx="0.7em" class="skill-icon-low"></tspan>
  </text>
  <!-- 新增的贯穿式分隔线 -->
  <line
    x1="-50"
    y1="-15 - 0.6em"
    x2="-50"
    y2="-15 + 0.6em"
    style="stroke: currentColor; stroke-width: 1px;"
    transform="translate(calc(100% + 0.35em), 0)"
  />
</g>

参数说明

  • 位置对齐:transform="translate(calc(100% + 0.35em), 0)" 让线条自动跟随文本宽度移动,100%代表文本的实际宽度,0.35em是文本到线条的间距,和原布局的间距保持一致。
  • 高度覆盖:y1="-15 - 0.6em"和y2="-15 + 0.6em" 以文本中心(y="-15")为基准,上下各延伸0.6em,覆盖常见字体的顶部到底部高度,实现完全贯穿的效果。
  • 样式匹配:stroke: currentColor让线条颜色与文本保持一致,stroke-width: 1px控制线条粗细,可根据需求调整数值。

替代方案:用矩形实现分隔线

如果需要更粗的分隔线,或者要自定义线条宽度,可以用<rect>代替<line>:

<rect
  x="-50"
  y="-15 - 0.6em"
  width="1px"
  height="1.2em"
  style="fill: currentColor;"
  transform="translate(calc(100% + 0.35em), 0)"
/>

这种方式实现的分隔线高度不受字体限制,视觉上更规整统一。

内容的提问来源于stack exchange,提问作者Sri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:30:25