web-dev-qa-db-ja.com

SVG要素IE9 +でのCSS変換

SVGパスを持つ:

<path class='st8' d='M73.4,11.3c-6.3,0-6.4,3.6-6.4,3.6v18c0,0,0.6,3.3,6.4,3.3c5.8,0,6.6-3.3,6.6-3.3v-18 C80,14.9,79.7,11.3,73.4,11.3z M75,31.3c0,0-0.3,1.2-1.6,1.2c-1.3,0-1.4-1.2-1.4-1.2V16.6c0,0,0.3-1.3,1.5-1.3s1.5,1.3,1.5,1.3V31.3 z'/>

要素タグからtransform属性を宣言する代わりに、CSSから変換しようとしました。

このプロセスはwebkitとfirefoxからは正常に機能しますが、IE9または10でテストする場合は 何も起こりません です。

<svg>
    <style>
        .st8 {
            -webkit-transform: rotate(45deg); /* works on chrome and Safari */
            -moz-transform: rotate(45deg); /* works on firefox */
            -ms-transform: rotate(45deg); /* doesn't work on IE */
            transform: rotate(45deg);
        }
    <style>
    <path class='st8' d='M73.4,11.3c-6.3,0-6.4,3.6-6.4,3.6v18c0,0,0.6,3.3,6.4,3.3c5.8,0,6.6-3.3,6.6-3.3v-18 C80,14.9,79.7,11.3,73.4,11.3z M75,31.3c0,0-0.3,1.2-1.6,1.2c-1.3,0-1.4-1.2-1.4-1.2V16.6c0,0,0.3-1.3,1.5-1.3s1.5,1.3,1.5,1.3V31.3 z'/>
</svg>

CSS変換がIEで実際に機能しないことを言及している場所をウェブで検索しようとしましたが、見つかりませんでした。したがって、私の質問ですが、IEで実際にcss変換を使用することは不可能ですか?要素タグでtransform属性を厳密に使用する必要がある以外に、回避策はありますか?

22
zanona

IE11はCSSスタイルを認識していませんが、SVGの変換属性をサポートしています。 https://connect.Microsoft.com/IE/feedback/details/811744/ie11-bug-with-implementation-of-css-transforms-in-svg を参照してください。

さいわい、JavaScriptを使用して、スタイルに一致するように属性を設定するだけで済みます。

var g= document.querySelector('.st8'),
    transform= getComputedStyle(g).getPropertyValue('transform');

g.setAttribute('transform', transform);

Working Fiddle

21
Rick Hitchcock

IE9 +はCSS3トランスフォームをサポートしていますが、SVGではサポートしていません。私の知る限りでは、CSSで行うことはできません。

ソース:CSS3トランスフォームの既知の問題の下でcaniuse http://caniuse.com/#feat=transforms2d

16
sam