0

Is there an IE fallback for transform rotateY(180deg)? Need a 3D flip animation!

TomD
  • 181
  • 1
  • 7
  • 16

3 Answers3

2

I don't have IE8 to test with but I think this might work: (ie5.5+) filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);

http://msdn.microsoft.com/en-us/library/ms532972%28VS.85%29.aspx

Matrix Filter for IE could be another option: http://msdn.microsoft.com/en-us/library/ms533014%28VS.85%29.aspx

I got the answer from this site when I was playing with something else: http://snook.ca/archives/html_and_css/css-text-rotation

Personally when using IE6-8 the tag that works best for me is display: none ;P

Jesse
  • 799
  • 5
  • 6
  • This rotates in the 2d plane. E.g. it corresponds to `transform: rotate(270deg)` - Not `transform: rotateY(270deg)` – troelskn Jul 06 '13 at 07:03
0

I know this question is old, but I had the same problem last week. What you need is:

.flipHorizontal {
filter: "fliph";
}

More specifically, if you want to rotate it continuously on the y axis I've created a jquery plugin to use:

**
 * jQuery Rotate On Axis In IE Plugin 1.0.0
 *
 * Copyright (c) 2014 Aryeh Citron
 *
 * Licensed under MIT: http://www.opensource.org/licenses/mit-license.php
 */


(function ($)
{
    $.fn.rotateOnAxisInIE = function (options)
    {
        var settings = $.extend(
        {
            spinSpeed: "slow",
        }, options);

        return this.each(function ()
        {
            var startingInterval;
            switch (settings.spinSpeed)
            {
                case "slow": startingInterval = 0.006; break;
                case "medium": startingInterval = 0.01; break;
                case "fast": startingInterval = 0.03; break;
                default: startingInterval = 0.01; break;
            }

            var image = this;
            var imageWidth = 1;
            var gettingSmaller = true;
            var fullRotation = true;
            var interval = startingInterval;
            var increment = startingInterval / 4;
            var refreshRateInMilliseconds = 35;

            setInterval(function ()
            {
                $(image).css("msTransform", "scaleX(" + imageWidth + ")");
                if (gettingSmaller)
                {
                    interval = interval + increment;
                    imageWidth = imageWidth - interval;
                }
                else
                {
                    interval = interval - increment;
                    imageWidth = imageWidth + interval;
                }

                if (imageWidth <= 0)
                {
                    gettingSmaller = false;
                    if ($(image).css("filter") == "")
                        $(image).css("filter", "fliph");
                    else
                        $(image).css("filter", "");

                    imageWidth = 0.01;
                }
                if (imageWidth >= 1)
                {
                    gettingSmaller = true;
                }

                if (gettingSmaller && interval < 0)
                    interval = 0;

            }, refreshRateInMilliseconds);
        });
    };
}(jQuery));

Example Usage

$("#myImageId").rotateOnAxisInIE();

or

$("#myImageId").rotateOnAxisInIE({ spinSpeed: "fast" });
LemonLion
  • 71
  • 1
  • 7
-1

You will need to use a filter

#rotate {
 -ms-transform:rotateY(180deg); //IE9
}
toxicate20
  • 5,270
  • 3
  • 26
  • 38
  • Thanks, but isn't that a 2D rotation on the X axis? RotateY flips backwards? – TomD Nov 22 '12 at 13:48
  • Tried this but doesn't seem to be working in IE9? Any ideas? http://jsfiddle.net/lsatdown/j3RFk/ – TomD Nov 22 '12 at 14:28