SVG中foreignObject的自动高度

Arn*_*aud 7 svg

在我的SVG中,我有一个包含ap元素的foreignObject.我希望这个结构的高度适应我文本的高度.

p元素已经适应了:我没有做任何事情.

但我对foreignObject有麻烦.如果我删除字段高度,它不起作用.高度:auto也不起作用.

Eri*_*röm 8

你可以foreignObjectem单位设置元素的高度,这可能有帮助吗?

眼下widthheight的属性foreignObject是必需的,而且必须有值> 0,否则元素将不会被渲染.

更新:另一种方法是将foreignObject的维度设置为100%,并使用foreignObject默认情况下具有透明背景的事实.由于svg中的其他元素以绝对方式布局,因此它们不依赖于foreignObject大小.

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <style>
    p { position: absolute; top: 50%; left: 50%; width: 100px; }
  </style>

  <circle cx="50%" cy="50%" r="25%" fill="lightblue"/>

  <foreignObject width="100%" height="100%">
    <p xmlns="http://www.w3.org/1999/xhtml">
        some wrapped text...
        some wrapped text...
        some wrapped text...
        some wrapped text...
    </p>
  </foreignObject>
</svg>
Run Code Online (Sandbox Code Playgroud)

  • 不,它不起作用,在这种情况下,foreignObject 占据所有屏幕高度(从它的起点到屏幕底部)。我还没有理解你消息的第二部分。 (4认同)
  • 对您的编辑的回答:是的,但问题是某些对象将被外来对象覆盖,因此例如无法单击它们。我可以将 foreignObject 放在其他对象之前,但我希望 &lt;p&gt; 位于其他对象之上,所以我认为这是必要的。(z-index 在 Firefox 中似乎不起作用) (3认同)
  • 我希望foreignObject的高度取决于文本的大小。它并不总是相同的:我无法预测它并以 em 单位给出正确的高度。 (2认同)

mah*_*ish 6

由于没有实际使用foreignObject本身来进行放大和缩小,因此您可以将foreignObject height和都设置width1,并通过CSS set foreignObject { overflow: visible; }使其内容可见,无论它是什么,并随其需要进行任何处理。