2014-06-30 69 views
4

使用CSS僞元素後,我有一個絕對定位框:不能旋轉:在IE8

#box { 
    display: block; 
    position: absolute; 
    width: 100px; 
    height: 100px; 
    z-index: 100; 
    top: 50px; 
    left: 50px; 
    border: 1px solid #000; 
} 

它有一個「箭頭」脫落,真的在一個絕對定位的方:僞後-元件。爲了使它看起來像一個箭頭,我想要逆時針旋轉45度方塊:

#box:after { 
    display: block; 
    position: absolute; 
    width: 10px; 
    height: 10px; 
    top: 10px; 
    left: -6px; 
    right: auto; 
    border-top: 1px solid #666; 
    border-left: 1px solid #666; 
    background-color: #fff; 
    content: ""; 
    -webkit-transform: rotate(-45deg); 
    -moz-transform: rotate(-45deg); 
    -ms-transform: rotate(-45deg); 
    -o-transform: rotate(-45deg); 
    transform: rotate(-45deg); 
} 

這工作正常,除了IE8。爲了使它在IE8中旋轉,我添加了規則:

#box:after { 
    -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.7071067811865482, M12=0.7071067811865466, M21=-0.7071067811865466, M22=0.7071067811865482), SizingMethod='auto expand'"; 
} 

但是,這是行不通的。我已經驗證了-ms篩選器的工作原理:例如,如果我將該規則應用於#box元素,則#box會在IE8中旋轉。但是:在僞元素之後不能識別-ms-filter規則。是否有人知道是否可以旋轉:IE8中的僞元素後,如果是這樣,如何?

+0

嘗試一次css3pie.com –

+1

請參閱http://stackoverflow.com/questions/10403916/why-does-a-filter-gradient-on-a-pseudo-element-not-work-in-ie8 – Aibrean

回答

3

過濾器在IE8中的僞元素上不起作用。無可以做的。

如果IE8支持是必須的,那麼最好的辦法就是讓#box:在它自己的div之後。不是最乾淨的解決方案,但對IE8有任何破解?

+0

謝謝;只是被告知這是不可能的。我不認爲我可以爲IE8創建一個新的div,但我會研究它。 –

0

IE8對僞元素部分支持...選中此Link
:afterIE8工作,一個<!DOCTYPE>必須申報。 此外,

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,你需要提供兩行代碼。

我已經採取了一些從這個優秀的答案。

CSS rotate property in IE

好運!

+0

謝謝,但我知道這些事情。我有一個<!DOCTYPE HTML>聲明。我不需要支持IE6/7。 –