文本和SVG

时间:2017-10-19 15:40:11

标签: css html5 svg

我有一个短文本,后面是有限宽度容器中的SVG。 预期的行为是,如果文本长于容器宽度,则文本会中断但是我希望它不会在文本和svg之间断开:

当前结果:
Current result:

预期结果:
enter image description here

在文本中间(蓝色之前)添加<nobr><span>标记,并且在SVG之后关闭它不是一个选项,因为文本来自外部数据库且无法编辑

<span class="text">
    Jack Wolfskin Jacke Colorado Flex - Midnight Blue
</span>
<span class="svg">
    <svg>
    ....
    </svg>
</span>

3 个答案:

答案 0 :(得分:1)

将display-block添加到svg容器:

.svg {
  display: inline-block;
}

答案 1 :(得分:1)

我发现的唯一解决方案需要对原始HTML进行讨厌的更改。

为确保图标在新行中永远不会孤单,我使用white-space: no-wrap;将最后一个单词和该图标包装在一个新元素中,此外,如果我们希望如果该行不能容纳最后一个单词,则仍将其拆分,图标,我们可以使这个新容器内联flex和flex-wrappable。

<div>
  Lorem ipsum dolor sit
  <span class="last_word">
      very_long_last_word
      <svg>...</svg>
  </span>
</div>

.last_word {
  /* Stick icon to last word */
  white-space: no-wrap;  
  
  /* Make sure last word and icon will break ultimately */
  display: inline-flex;
  flex-wrap: wrap; 
}

实时示例:https://jsfiddle.net/uerzo6sa/

答案 2 :(得分:0)

您可以在SVG上定义position: absoluteautotop等用right

https://codepen.io/jsit/pen/xxOQoVW

唯一的副作用是,这将使SVG出现在包含框的外面;从某种意义上讲,这是它全部起作用的原因。

enter image description here