[英]ForeignObject not displaying in Firefox, but is in Chrome and Edge
[英]foreignObject display:none in Firefox and Chrome
我有一个可与SVG组件配合使用的JavaScript应用。 我有svg组:
<svg id="canvas" width="100%" height="100%" viewBox="0 0 1500 500">
<g class="node-element" x="0" y="0" height="20" width="300" id="node-c87">
<text class="node-element-text" x="12" y="15">person:object</text>
<image x="0" y="4" width="11" height="11" xlink:href="assets/images/object-icon.png"></image>
</g>
<g class="nested-group">
<g class="node-element" x="50" y="100" height="20" width="300" id="node-c87">
<text class="node-element-text" x="12" y="15">person:object</text>
<image x="0" y="4" width="11" height="11" xlink:href="assets/images/object-icon.png"></image>
</g>
</g>
</svg>
而且我对CSS的定义如下(svg组上的CSS作用于<g>
所有子元素。
.node-element {
display: inline;
}
.node-element :active {
opacity: 0.5;
}
.node-element:hover {
opacity: 0.5;
}
问题在于它在Firefox中无法正常运行,而在Chrome中则可以正常运行。 为什么以及如何解决?
节点元素采用树状结构,其中x
值基于等级而不同。 在Firefox中,悬停无法在前几个节点元素上正常工作。 但是, 无论x
值如何,在其余节点元素上都可以正常工作 。
更新:问题实际上是由foreignObject组件引起的,该组件已将元素设置为display:none
。 悬停实际上在隐藏的组件上工作,而不是所需的元素。 通过将display:none设置为foreignObject可以解决此问题。
但是我想知道为什么这两种浏览器(Chrome和Firefox)的行为不同?
该问题实际上是由foreignObject组件引起的,该组件已将元素设置为display:none
。 悬停实际上在隐藏的组件上工作,而不是所需的元素。 通过将display:none
设置为foreignObject可以解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.