为什么 SVG 在 Chrome 中被截断?

Why is SVG cut off in Chrome?

我对 SVG 了解不多 - 只是想学一点。所以,我去了 Wikipedia SVG Example 并认为 "Oh, can I just embed XML like that in my web page?" 试过了,基本上,是的,你可以,但是我看到的图像是在 Chrome 中渲染的(Windows Enterprise 7 上的版本 45.0.2454.101 m 运行)在 Y=150 标记(维基百科页面网格上的 Y = 150)附近截止。

在 IE 下呈现的同一网页看起来就像维基百科页面上的图像。 在 Firefox 下查看的同一网页也被截断,如 Chrome。所以看起来 IE 在这里得到了正确的东西 Chrome 和 Firefox 出错了。

这是我正在查看的网页的全部来源:

<html>
  <head>
    <title>SVG test</title>
  </head>
  <body>

<h1>SVG test</h1>

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <rect x="25" y="25" width="200" height="200" fill="lime" stroke-width="4" stroke="pink" />
  <circle cx="125" cy="125" r="75" fill="orange" />
  <polyline points="50,150 50,200 200,200 200,100" stroke="red" stroke-width="4" fill="none" />
  <line x1="50" y1="50" x2="200" y2="200" stroke="blue" stroke-width="4" />
</svg>

HTML 没有比这更简单的了。这里的问题是什么?有什么简单的方法可以使 Chrome 和 Firefox 渲染整个图像(即像 IE 一样)?

谢谢!

您需要提供宽度和高度属性(或样式)。没有它,外部 <svg> 元素的大小默认为 300 x 150px。

html, body {
  width: 100%;
  height: 100%;
}
<html>
  <head>
    <title>SVG test</title>
  </head>
  <body>

<h1>SVG test</h1>

<svg width="100%" height="100%">
  <rect x="25" y="25" width="200" height="200" fill="lime" stroke-width="4" stroke="pink" />
  <circle cx="125" cy="125" r="75" fill="orange" />
  <polyline points="50,150 50,200 200,200 200,100" stroke="red" stroke-width="4" fill="none" />
  <line x1="50" y1="50" x2="200" y2="200" stroke="blue" stroke-width="4" />
</svg>

在这种情况下,Firefox 和 Chrome 是正确的,IE 是错误的。