CSS-преобразование в SVG-элементах IE9 +
Наличие пути 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 ничего не происходит.
<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, однако я не смог его найти. Отсюда мой вопрос: действительно ли невозможно использовать css-преобразование в IE? Есть ли какое-либо обходное решение помимо необходимости строго использовать атрибут transform
в теге элемента?
Ответы
Ответ 1
IE11 поддерживает атрибут преобразования в SVG, хотя он не распознает стиль 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);
Рабочий скрипт
Ответ 2
Хотя IE9 + поддерживает преобразования CSS3, они не поддерживают их в SVG и, насколько мне известно, это невозможно сделать в CSS.
Источник:
caniuse по известным проблемам для CSS3 Transforms
http://caniuse.com/#feat=transforms2d