我正在使用 <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 版本。
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/