2011-07-06 107 views
1

我有一個網頁,其中使用AlphaImageLoader CSS過濾器IE8像這樣:IE8忽略 「過濾器」 CSS樣式

過濾器:進程id:DXImageTransform.Microsoft.AlphaImageLoader(SRC =「/圖片/ thing.png ',sizingMethod ='scale');

在我測試IE8(Windows XP,出廠設置)時,一切都很好。然而,客戶端收到了某個聲稱使用IE8的截圖,看起來瀏覽器完全忽略了filter指令。通過條件註釋加載的特定於IE的樣式表中的所有其他樣式似乎都有效。在IE或Windows中是否有任何設置會導致這種情況?

謝謝,西蒙

+0

這將是值得comfirming客戶肯定是IE8,如果可能的話從他們那裏得到一個screengrab。 他可以運行兼容性模式,或者更老版本的IE瀏覽器 - 你應該清楚這個問題了花太多時間思考「的可能性」 –

+0

這是一個好主意之前,我做了現在... – Simon

+0

更新:我得到確認它確實是IE8並且兼容模式關閉。這是奇怪的... – Simon

回答

0

這個簡單的測試用例:http://fiddle.jshell.net/TyMxr/show/light/

<div></div> 

div { 
    border: 2px solid red; 
    width: 256px; 
    height: 256px; 
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.gravatar.com/avatar/74c04b6c96836f044ed927a5db4dc92b?s=128&d=identicon&r=PG', sizingMethod='scale'); 
} 

作品在IE6,IE7,IE8,IE9,和Quirks模式在任何這些版本的。

我想不出任何理由,這在IE中不起作用。

你有測試頁面看嗎?我認爲還有其他事情必須繼續。

6

IE8取代filter-ms-filter

如果你想支持IE瀏覽器的所有版本,你需要提供這兩種風格。

-ms-filter的語法是filter略有不同,以及:

  • 所有過濾器現在充分progid字符串指定(根據您的例子,但一些過濾器可以預先用更短的語法規定)。

  • -ms-filter值必須用引號括起來。這是爲了防止它被無效的CSS語法(因爲它包含一個冒號progid後,它是無效的CSS,在惡劣的情況下,已經知道在其他瀏覽器是阻止他們正常讀取CSS文件的其餘部分造成解析錯誤)。

因此,在你的榜樣,你需要以下樣式:

.myelement { 
    filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/thing.png', sizingMethod='scale'); 
    -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/thing.png', sizingMethod='scale')"; 
} 

注意,IE9已經下降同時支持filter-ms-filter,有利於equivalient標準CSS3屬性。

希望有所幫助。

+0

你試試我的測試情況下IE8/9?有用。 – thirtydot

+0

@thirtydot - 它可能在某些情況下工作,但肯定不是所有情況。我沒有嘗試這種特定的風格,但肯定有一些需要兩者。 – Spudley