html - Safari 上 SVG foreignObject 中 <video> 元素的错误位置

标签 html svg safari

我正在使用 <foreignObject> SVG 元素嵌入 <video>基于 SVG 的 UI 中的元素。

除了 Safari 之外,所有浏览器上的一切都很好,其中视频元素的位置与其 <foreingObject> 完全错误容器。

我建立了一个简单的页面来重现这个问题,也可以在 Codepen 上找到。 :

<body style='background-color: #999'>
  <svg viewBox='0 0 100 200' style='width: 200px; height: 400px; border: 1px solid black'>

    <foreignObject x='10' y='10' width='80' height='80'>
      <div xmlns='http://www.w3.org/1999/xhtml' style='height: 100%; background-color: white; border: 1px solid blue'>
        <span>bla bla bla</span>
      </div>
    </foreignObject>

    <foreignObject x='10' y='110' width='80' height='80'>
      <div xmlns='http://www.w3.org/1999/xhtml'  style='width: 100%; height: 100%; border: 1px solid red'>
        <video xmlns='http://www.w3.org/1999/xhtml' width='100%' height='100%' playsinline autoplay src='https://file-examples.com/wp-content/uploads/2017/04/file_example_MP4_480_1_5MG.mp4'></video>
      </div>
    </foreignObject>

  </svg>

</body>


这是渲染页面:左侧是 Chrome 版本,右侧是 Safari 版本。

enter image description here

caniuse声明 <foreignObject> Safari 支持,实际上显示了视频元素。但是它的定位有什么问题呢?

最佳答案

难以置信,这是一个 bug in webkit .更难以置信的是,这个漏洞从 2009 年就开始开放了!!!

查看错误页面上的评论,发现可能的解决方法是添加 position: fixed到风格div包含 video元素。

感谢@Robert Longson 为我指明了正确的方向。

个人评论:我不明白为什么caniuse声明foreignObject当这个错误打开这么长时间时,Safari 支持。

关于html - Safari 上 SVG foreignObject 中 <video> 元素的错误位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61895287/

相关文章:

html - 如何将变量传递给 CSS 文件?

javascript - 将单击的图像保存在 var 中并将其设置为随后显示的新 div 的背景 - 如何?

javascript - 如何获取没有 X/Y 属性的 SVG 元素(路径等)的 x/y 坐标?

css - 如何使用 CSS 或 SVG 滤镜效果从 Gmail 编辑器复制图像突出显示效果?

Java 小程序不会在 Safari 中执行

jquery - Safari 在可滚动的 div 内容上对 Angular 滑动时卡住

javascript - 如何以编程方式在 iPad 上滚动窗口?

css - div 中心顶部边缘的白色 strip

html - 如何在同一页面中为 "visited" anchor 设置不同的颜色?

javascript - 使用javascript从任意SVG路径中提取x,y坐标