AngularJS で SVG を使用すると、奇妙な動作に遭遇しました。この$routeProvider
サービスを使用してルートを構成しています。この単純な SVG をテンプレートに入れると、すべて問題ありません。
<div id="my-template">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<rect fill="red" height="200" width="300" />
</svg>
// ...
</div>
しかし、たとえば次のコードを使用してフィルターを追加すると、次のようになります。
<div id="my-template">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="blurred">
<feGaussianBlur stdDeviation="5"/>
</filter>
</defs>
<rect style="filter:url(#blurred)" fill="red" height="200" width="300" />
</svg>
</div>
それで:
- それは私のホームページで動作します。
- Firefoxでは、SVG は他のページでは表示されなくなりましたが、本来あったはずのスペースが残っています。Chromeでは、SVG は表示されますが、まったくぼやけていません。
- スタイルを手動で (Firebug を使用して) 削除すると、SVG が再び表示され
filter
ます。
ルート構成は次のとおりです。
$routeProvider
.when('/site/other-page/', {
templateUrl : 'view/Site/OtherPage.html',
controller : 'Site.OtherPage'
})
.when('/', {
templateUrl : 'view/Site/Home.html',
controller : 'Site.Home'
})
.otherwise({
redirectTo : '/'
})
;
Firefox では「動作」しますが、Fiddle で Chrome で問題を再現できなかったことに注意してください。
で SVG 全体を作成しようとしましたが、無駄でしたdocument.createElementNS()
。
誰かが何が起こっているのか考えていますか?