css - 如何通过滚动使溢出的 SVG 内容可见?

标签 css html svg scroll overflow

我有这个简单的 HTML:

<html>
  <body>
    <embed src="test.svg" type="image/svg+xml" style="border:3px solid green;width:200px;height:200px;overflow:scroll;">
  </body>
</html>

还有一个简单的 SVG:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" style="border:3px solid red;width:500px;height:500px;overflow:auto;">
  <circle cx="50" cy="250" r="80" stroke="green" stroke-width="4" fill="yellow" />
</svg>

浏览器的输出:

  1. [1,1]边缘:确定
  2. [2,1] IE11:好的
  3. [1,2] Chrome55:不可滚动
  4. [2,2] Firefox50:可忽略程度的滚动

SVG Overflow

如何确保 Firefox 和 Chrome 能够滚动 <embed>带有溢出的 SVG 内容,如 Edge 和 IE 中那样?

谢谢。

最佳答案

只需在嵌入周围放置一个 div 并将其用作滚动区域...

<html>

<body>
  <div style="border:3px solid green;width:100px;height:100px;overflow:scroll;">
    <embed src="https://upload.wikimedia.org/wikipedia/commons/e/e9/SVG-Grundelemente.svg" type="image/svg+xml">
  </div>
</body>

</html>

为了匹配 MS 浏览器的行为,您必须扩展 viewBox 以包含您希望能够滚动到的所有元素... 给定适当的宽度和高度应该是你想要的......

您也可以使用 svgDocuments currentTranslatecurrentScale 属性滚动您自己的缩放和平移解决方案...我很好奇 currentTranslate 对于这种奇怪的 MS 行为有何表现。 ..

关于css - 如何通过滚动使溢出的 SVG 内容可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41735743/

相关文章:

html - Tailwindcss 不适用于 NextJS Link 组件

powershell - 写入Amazon AWS S3时排除文件或某些类型

SVG - 带有 RadialGradient 的 mask feGaussianBlur

python - 无法使用 jinja 更改内联 css

javascript - 特殊字符在 SVG 中无法正确呈现

jquery - 使用纯 HTML + CSS 的表格行的最大高度

使用 html5 选择器时不应用 CSS 样式。浏览器在渲染 CSS 方面有什么变化吗?

javascript - 如何进行转换 :translate-drag function of d3 more smooth?

javascript - 不透明度滤镜使文本变得不那么白,我该如何修复它?

html - 难以捉摸的图标字体不适用于任何版本的 IE