由Angular 2创建的Svg不会扩展

时间:2016-06-08 12:01:04

标签: css svg angular

众所周知,带viewbox的svg-element应自动缩放到样式的大小。

例如,我们将200 * 200的圆圈放入100 * 100 div。在此之前,让svg占用所有div的空间。 Svg缩放,以便我们可以看到完整的圆圈:

div {
  width: 100px;
  height: 100px;
  outline: 1px dotted red;
}

svg {
  width: 100%;
  height: 100%;
}
<div>
  <svg viewbox="0 0 200 200">
    <circle cx="100" cy="100" r="99" />
  </svg>
</div>

现在让我们将这个标记放入Angular 2组件:

import {Component, View, CORE_DIRECTIVES} from 'angular2/angular2'

@Component({
  selector: 'my-app',
  template: `
    <div>
      <svg viewbox="0 0 200 200">
        <circle cx="100" cy="100" r="99" />
      </svg>
    </div>
  `
})
export class App {
  constructor() {
  }
}

我们会看到相同的样式:

Screenshot

为什么会发生这种情况?如何解决? 我需要svg自动缩放。

完整示例:http://plnkr.co/edit/jNJNJLo8ygVcp9SIVcDx?p=preview

有趣的是,如果您在devtools中选择此svg - 元素并运行

$0.outerHTML = $0.outerHTML

该元素将获得其预期的表示。

PS:Same question in Russian.

1 个答案:

答案 0 :(得分:4)

SVG区分大小写。正确的属性是viewBox而不是viewbox。