-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Per the MSDN, IE9 supports -ms-transform: rotate(deg); (2D transformation), but simple-transform outputs -ms-transform: rotateZ(deg); (3D transformation), which isn't supported by IE9.
I'm not sure exactly where this syntax is getting picked up/determined, but I was able to get the correct transform output by extending simple-transform with the following mixin:
@mixin ie-transform(
$scale: false,
$rotate: false,
$trans-x: false,
$trans-y: false,
$skew-x: false,
$skew-y: false,
$origin-x: false,
$origin-y: false
) {
$trans: unquote("");
@if $scale { $trans: $trans scale($scale) }
@if $rotate { $trans: $trans rotate($rotate) }
@if $trans-x { $trans: $trans transX($trans-x) }
@if $trans-y { $trans: $trans transY($trans-y) }
@if $skew-x { $trans: $trans skewX($skew-x) }
@if $skew-y { $trans: $trans skewY($skew-y) }
@include experimental(transform, $trans, $moz: false, $webkit: false, $o: false, $khtml: false, $official: false, $ms: -ms);
@include simple-transform($scale, $rotate, $trans-x, $trans-y, $skew-x, $skew-y, $origin-x, $origin-y);
}This works by aggregating the transformations the same way create-transform does, but uses rotate() instead of working out rotateZ, then calling @include experimental directly, instead of working up the chain, and adding an extra -ms-transform line before the default simple-transform output. This allows for versions of IE that support rotateZ (IE10+) to use the 3D transform syntax.
While the above workaround works (at least well enough for my purposes), it seems to me like a bug that it isn't included in the base transformations, or that simple-transform is using 3D transformation syntax at all, when the parameter list is limited to X and Y.