如何使 SVG 在 HTML 中没有滚动条的情况下可靠地显示?在 Firefox 和 Chrome 中都可以使用的东西就足够了。
最基本的步骤是 SVG 在文档中显示为“自然”的宽度和高度。全面展开。没有滚动条。Firefox 通常会这样做。Chrome 通常不会(除非我使用实际宽度和高度的先验知识)。
更高级的步骤是我给 SVG 一个任意宽度(比如 400 像素),并且 SVG 显示为适当缩放,同时保持其纵横比。同样,没有滚动条。
我宁愿不必知道 HTML 中 SVG 的自然尺寸。更改 HTML 或 CSS 是最好的,但更改 SVG(一次,不是针对我想要显示的每个尺寸)也可以。
这种事情可能吗?
这是一些嵌入 svg 的示例 html。
<html>
<head><title>SVG Sizing</title></head>
<body>
<embed type="image/svg+xml" src="test.svg">
</body>
</html>
如果需要,下面的 <embed> 标记可以更改为 <object> 或其他内容。
这是一个示例 test.svg:
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="1200px" height="297px" version="1.1" viewbox="0 0 1200 297" xmlns="http://www.w3.org/2000/svg" shape-rendering="crispEdges" stroke-width="1" text-rendering="geometricPrecision">
<text x="300" y="15" textLength="8" font-family="Helvetica" font-size="12" fill="black" text-anchor="middle"> A </text>
<text x="900" y="15" textLength="8" font-family="Helvetica" font-size="12" fill="black" text-anchor="middle"> B </text>
<line x1="300" y1="22" x2="300" y2="47" stroke="black"/>
<line x1="900" y1="22" x2="900" y2="47" stroke="black"/>
<text x="587" y="37" textLength="25" font-family="Helvetica" font-size="12" fill="black"> Start </text>
<line x1="300" y1="272" x2="300" y2="297" stroke="black"/>
<line x1="900" y1="272" x2="900" y2="297" stroke="black"/>
<text x="583" y="287" textLength="32" font-family="Helvetica" font-size="12" fill="black"> Finish </text>
<line x1="150" y1="284" x2="582" y2="284" stroke="black" stroke-dasharray="2,2"/>
<line x1="618" y1="284" x2="1050" y2="284" stroke="black" stroke-dasharray="2,2"/>
</svg>
更新:
好的,似乎我正在使用的工具正在生成带有小写viewbox
属性的 SVG,但是这是不正确的,并且属性名称实际上是驼峰式viewBox
,因为 Erik 在下面正确地写了。
这与删除宽度/高度或更改为百分比相结合,使我能够解决问题的两个部分。
感谢大家!