css - 将 Flexbox 与 SVG 文本和 tspan 结合使用

标签 css svg flexbox

我试图将多个两行文本框放置得很好,如下所示:

enter image description here

我想用 flex 盒来做到这一点,这样无论我如何调整它的大小,文本都会覆盖矩形的相同比例。这是我的尝试:

.words text {
  dominant-baseline: text-before-edge;
  flex: 1 0 auto;
  box-sizing: border-box;
}
.words {
  display: flex;
  justify-content: space-around;
  width: 50%;
}
rect {
  fill: rgba(255, 0, 0, 0.1);
}
<svg>
  <rect width="300" height="100"></rect>
  <g class="words">
    <text>
      <tspan x="0" y="0">Text</tspan>
      <tspan x="0" y="1.5em">One</tspan>
    </text>
    <text>
      <tspan x="0" y="0">Text</tspan>
      <tspan x="0" y="1.5em">Two</tspan>
    </text>
    <text>
      <tspan x="0" y="0">Text</tspan>
      <tspan x="0" y="1.5em">Three</tspan>
    </text>
  </g>
</svg>

JSFiddle

很明显,文本只是堆积在一起,而不是像我希望的那样均匀间隔。我正在关注this guide ,但我不确定我是否只是不理解这个 Flex 东西是如何工作的,或者在将它与 text/tspan 一起使用时是否存在一些限制。

如何使用 CSS 将这些 SVG text 标签均匀地分布在矩形的左半部分?

最佳答案

display:flex 对 SVG 内容没有影响。 display none 表示不渲染,除 none 之外的任何其他值都将被同等对待。

关于css - 将 Flexbox 与 SVG 文本和 tspan 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36368192/

相关文章:

javascript - 获取 HTML5 文档中 SVG 内联元素的屏幕位置

css - 最小宽度不适用于嵌套 Flexbox

css - flexbox 未对齐 :after & :before correctly in firefox and safari

html - 前三个字段与其他字段不一致

javascript - 通过父 Div 容器实现透明

html - 如何用 flexbox 垂直包装内容?

html - Display:flex 拉伸(stretch)百分比宽度图像

html - 如何使用 bootstrap 将我的行居中。我试过其他解决方案无济于事

javascript - 在 Highcharts Networkgraph 中显示/隐藏子节点和链接

javascript - firefox 中 tipsy、svg 和 css 的解决方法?