CSS Transform not working in IE 8
If you see your "filter:" rotation to 3, it will give a 270 degree rotation in IE 8 (and downward to v5.5, IIRC).
http://msdn.microsoft.com/en-us/library/ms532918(v=vs.85).aspx
css transform rotate not working in ie8 even after implementing filter
To rotate by 45 degrees in IE, you need the following code in your stylesheet:
filter: progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476); /* IE6,IE7 */
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476)"; /* IE8 */
See here for more detail:
https://stackoverflow.com/a/4617511/2161568
CSS3 transform property working differently in Internet Explorer
Easier Approach
Instead of positioning from the top
and left
, position instead from the bottom
and right
. After you've done this, simply change your -50%
translations to positive 50%
. This will remove the overflow e.g.
.center-center {
position: absolute;
bottom: 50%;
right: 50%;
transform: translate(50%, 50%);
}
You can see these changes in action here: http://jsfiddle.net/bd17gsss/
It's worth noting that this bug is still filed, and our team will still give it the appropriate consideration when time and cycles permit us to do so.
Original Answer
There appears to be a layout bug with position: absolute
in this particular demo. It's behaving similar to position: relative
when it shouldn't be. I've opened a bug on this issue for the Internet Explorer team to investigate further.
For now, you could switch your position value from absolute
to fixed
, which appears to render the centered element correctly. This prevents you from having to use a fixed set of dimensions over and over, and instead allows you to use this approach as a general-purpose .modal
style class that will center anything it is applied to.
The obvious caveat with this change is that your element is positioned according to the viewport, and no longer the document itself. This will freeze it on the screen effectively.
.modal {
position: fixed;
top: 50%; left: 50%;
background-color: red;
transform: translate(-50%, -50%);
}
To demonstrate the success this approach has with various dimensions, we can cycle through a few example sets and test the rendering of the element to ensure it is properly centered:
(function () {
var xandy,
index = 0,
modal = document.querySelector( ".modal" ),
sizes = [
{ x: "50%" , y: "30%" },
{ x: "400px", y: "288px" },
{ x: "25vw" , y: "75vh" },
{ x: "90%" , y: "90%" }
];
setInterval(function changeSize () {
xandy = sizes[ index++ % sizes.length ];
modal.style.width = xandy.x;
modal.style.height = xandy.y;
}, 1000 );
}());
The end-result can be viewed online here: http://jsfiddle.net/jonathansampson/c00u5ev8/
rotate(-90deg) not work IE8
Sadly, IE8 does not support CSS3, which includes transform
, etc.. You should either upgrade your browser (to at least IE9), or switch to another, more modern one, like Chrome or Firefox. Alternatively, you can use a polyfill.
Related Topics
CSS "Transform: Rotate()" Affecting Overall Design with "Position: Absolute" (Not Aligning Properly)
Javafx: Styling Application with CSS Selectors
CSS Form Checkbox Styling with Checked and After Tags
CSS Firefox - How to Deactivate The Dotted Border ( Firefox Click Indicator )
CSS Key-Frames Animating Dynamic Height
Animating Elements Sequentially in Pure CSS3 on Loop
CSS3 Transform Property Working Differently in Internet Explorer
Definition List with Inline Pairs
Place Custom Checkbox Icon to Right of Label Bootstrap 4
Right Aligning Cell Content in a Datatable Column
Li: Before Content: "✔ "; Different Color on Some Mobile Devices
Equivalent for '-Moz-Element' in Other Browsers
How to Make Webgl Canvas Transparent
Using @Import for Google Fonts Is Not Working on Internet Explorer
Why Use Percentage Value for Div's Width in CSS
What Does Mean /*! Some Url or Text */ in CSS
Is It Wise to Use Fractional/Decimal Pixels for Borders in CSS