我想将DIV旋转到一定程度。在FF中可以运行,但是在IE中我遇到了问题。
例如,在以下样式中,我可以将rotation = 1设置为4
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
这意味着DIV将旋转到90或180或270或360度。但是,如果我只需要将DIV旋转20度,那么它将不再起作用。
如何在IE中解决此问题?
我想将DIV旋转到一定程度。在FF中可以运行,但是在IE中我遇到了问题。
例如,在以下样式中,我可以将rotation = 1设置为4
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
这意味着DIV将旋转到90或180或270或360度。但是,如果我只需要将DIV旋转20度,那么它将不再起作用。
如何在IE中解决此问题?
Answers:
要在IE中旋转45度,您需要在样式表中添加以下代码:
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 */
您将从上面的内容中注意到IE8与IE6 / 7具有不同的语法。如果要支持IE的所有版本,则需要提供两行代码。
弧度中有可怕的数字。如果您想使用45度以外的角度,则需要自己计算出数字(如果要查找,请参见Internet上的教程)。
另请注意,由于过滤器字符串中的冒号符号未转义,因此IE6 / 7语法会导致其他浏览器出现问题,这意味着它是无效的CSS。在我的测试中,这导致Firefox忽略过滤器之后的所有CSS代码。这是您需要注意的事情,如果被它所吸引,可能会导致数小时的混乱。我通过在其他浏览器无法加载的单独的样式表中包含特定于IE的内容来解决此问题。
当前所有其他浏览器(包括IE9和IE10-是的!)都支持CSS3transform
样式(尽管通常带有供应商前缀),因此您可以使用以下代码在所有其他浏览器中实现相同的效果:
-moz-transform: rotate(45deg); /* FF3.5/3.6 */
-o-transform: rotate(45deg); /* Opera 10.5 */
-webkit-transform: rotate(45deg); /* Saf3.1+ */
transform: rotate(45deg); /* Newer browsers (incl IE9) */
希望能有所帮助。
由于此答案仍在投票中,因此我觉得我应该使用称为CSS Sandpaper的JavaScript库的信息来更新它,即使在较旧的IE版本中,该库也允许您使用(接近)标准CSS代码进行轮换。
将CSS沙纸添加到您的网站后,您应该能够为IE6-8编写以下CSS代码:
-sand-transform: rotate(40deg);
比filter
您通常需要在IE中使用的传统样式容易得多。
还要注意一个专门针对IE9(仅适用于IE9)的怪癖,它同时支持标准transform
IE和旧样式IE -ms-filter
。如果同时指定了它们,这可能会导致IE9完全混乱,并仅在该元素所在的位置呈现一个纯黑框。最好的解决方案是filter
使用上面提到的“ Sandpaper” polyfill避免样式。
transform
CSS,而不是MS过滤器。如果您使用IE10浏览器模式测试IE的较早版本,请告诉它启用旧版过滤器-但不要忘记,您的IE10 +用户将禁用旧版过滤器!Arrrrrgggghhhhhhhh
您需要执行如下矩阵转换:
filter: progid:DXImageTransform.Microsoft.Matrix(
M11 = COS_THETA,
M12 = -SIN_THETA,
M21 = SIN_THETA,
M22 = COS_THETA,
sizingMethod = 'auto expand'
);
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(
M11 = COS_THETA,
M12 = -SIN_THETA,
M21 = SIN_THETA,
M22 = COS_THETA,
SizingMethod = 'auto expand'
)";
其中COS_THETA和SIN_THETA是角度的余弦和正弦值(即0.70710678
45°)。
sin
并cos
在计算器上即可!谢谢!
有一个名为IETransformsTranslator的在线工具。使用此工具,您可以对IE6,IE7和IE8进行有效的矩阵滤波器转换。只需粘贴您的CSS3变换函数(例如,rotate(15deg)),其余的事情就会完成。 http://www.useragentman.com/IETransformsTranslator/
向下滚动到Microsoft IE9 +前缀的“ .box_rotate”。这里类似的讨论:在jQuery中旋转Div元素
IE转换的有用链接
该工具使用Microsoft专有的Visual Filters技术将CSS3 Transform属性(几乎所有现代浏览器都使用)转换为等效的CSS。