CSS转换SVG Elements IE9 +

时间:2014-01-23 02:45:31

标签: css3 internet-explorer svg css-transforms

拥有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'/>

我尝试将其从CSS转换而不是从元素标记中声明transform属性。

此过程在webkit和firefox中运行良好,但是在IE9或10 nothing happens上进行测试时。

<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属性外,还有其他解决方法吗?

2 个答案:

答案 0 :(得分:21)

IE11支持SVG中的transform属性,即使它无法识别CSS样式。请参阅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

答案 1 :(得分:16)

虽然IE9 +支持CSS3转换,但他们不支持SVG,据我所知,它不能用CSS完成。

源: 在CSS3 Transforms的已知问题下使用 http://caniuse.com/#feat=transforms2d