滚动在 chrome 中的 svg 异物内部不起作用

Posted

技术标签:

【中文标题】滚动在 chrome 中的 svg 异物内部不起作用【英文标题】:scroll is not working inside svg foreign object in chrome 【发布时间】:2016-03-16 08:35:49 【问题描述】:

我在 svg 外来对象中有 div,带有溢出:自动

滚动只能使用鼠标滚轮,不能拖动条 它适用于 Firefox,但不适用于 chrome/safari 如果没有对 svg-g 元素进行转换,它可以工作

见小提琴:http://jsfiddle.net/ranr/ncry8Lmx/

这是 chrome 中的错误吗?有什么办法吗?

<svg  >
  <g transform="translate(100,50)">
    <rect x="4" y="4"   stroke="#666666" fill="#eeeeee" />
    <foreignObject x="10" y="10"  >
      <div xmlns="http://www.w3.org/1999/xhtml" style="height:100%;overflow:auto;">
        <div>aaaaaa</div>
        <div>bbbbbb</div>
        <div>cccccc</div>
        <div>dddddd</div>
        <div>eeeeee</div>
        <div>ffffff</div>
      </div>
    </foreignObject>
    <g>
</svg>

【问题讨论】:

还报告了有关铬的项目code.google.com/p/chromium/issues/detail?id=568614 【参考方案1】:

我认为这是 Chrome/Safari 的错误。如果您尝试将 overflow:auto 更改为 overflow:scroll,则 div 会显示在 foreignObject 之外。

【讨论】:

【参考方案2】:

那个铬臭虫已经关闭,不幸的是,它看起来更糟。如果您打开 jsfiddle,则该 div 内容是不可见的,除非您删除 overflow:auto 样式。我测试了,如果overflow-y:scroll还是不可见的。在 Chrome v62 中测试。 Firefox 57 运行良好。

【讨论】:

以上是关于滚动在 chrome 中的 svg 异物内部不起作用的主要内容,如果未能解决你的问题,请参考以下文章

SVG 元素的 CSS 动画在 Chrome 中不起作用

SVG 的 tabIndex 在 IE 和 React 中不起作用

创建带有溢出的滚动条不起作用?

为啥滚动仅在 Chrome 中不起作用?

中风 url 在 Edge 和 IE 11 SVG 中不起作用

内部函数在 Firefox 中不起作用,但在 chrome 中可以