2011-10-18 100 views
18

我想使用CSS3屬性變換:規模。CSS3變換:規模IE

div 
{ 
    transform: scale(0.5,0.5); 
} 

有沒有辦法在Internet Explorer 8及更低版本中模仿這個? 可能是filter或Javascript解決方案?

我在網上搜索沒有任何結果。

非常感謝,文森特

+5

問這樣的問題時,請註明您要問的是IE的版本(S),因爲它使一個非常大的不同答案。 – Spudley

回答

32

IE9支持變換:

-ms-transform: scale(0.5,0.5); 

對於其他版本的IE,有一個複雜的語法。類似這樣的:

filter: progid:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand', 
    M11=1.5320888862379554, M12=-1.2855752193730787, 
    M21=1.2855752193730796, M22=1.5320888862379558); 

請看here瞭解更多信息。

+7

您還可以嘗試[CSS3轉換爲矩陣轉換器](http://www.useragentman.com/IETransformsTranslator/)以進行一次轉換爲IE格式。 – thirdender

+1

-ms-transform:scale(0.5);應該足以讓IE9進行恆定縮放。 – Kozuch

13

沒有,IE8和更早的版本不支持標準transform風格。雖然IE9支持它。

有解決方案,您可以嘗試使用filter風格,但他們會亂碼。

但對於你的問題描述的簡單情況(基本上是一個簡單的按比例縮小),你可以使用IE專有zoom財產。

由於它是非標準的,zoom最常見的用途是zoom:1,它用於修復一些IE的佈局故障(特別是在IE6和IE7中)。但它也可以進行實際縮放,您可以使用zoom:0.5來實現您要查找的效果。

關於使用zoom的好處是,它可以像任何其他普通的CSS屬性一樣在IE中使用(filter替代品有一些您需要了解的嚴重渲染怪癖)。

使用zoom唯一不利的方面是您需要在IE9或更高版本中禁用它,否則它會與您的transform風格相互影響併產生一些不需要的效果。我不是一個普遍支持使用CSS黑客,但你可以使用/9黑客(documented here),使其隻影響IE8和更早的版本,這意味着你可以指定transform,並在同一個樣式表的zoom兩個,像這樣:

div { 
    transform: scale(0.5,0.5); 
    zoom: 0.5\9; 
} 

否則,您需要使用條件註釋來決定是否使用它。

顯然,如果你想做比簡單的比例尺更復雜的任何事情,那麼zoom將不適合,但對於一個簡單的例子,就像你的問題中的那個,它將是完美的。

+0

感謝您的有趣答覆。不幸縮放似乎只能縮放文本。而不是我的div的尺寸。 – Vinzcent

+0

是的,我想這取決於你實際需要達到的是否「縮放」是合適的。 – Spudley

+0

感謝/ 9黑客技巧。我在IE9和10中有一些奇怪的行爲,因爲我放大了IE8的相同樣式。 – dex3703