煩人的IE7、8,半透明濾鏡(filter:alpha)失效、png半透明失效的解決辦法


在項目中的問題,之前用的是用IETest測試IE7,8發現背景透明設置無效,后來找文章解決!看了一些資料,做下總結。

幾種IE半透明CSS樣式

IE8里可以這樣寫 -ms-filter:”progid:DXImageTransform.Microsoft.Alpha(opacity=50)”; 

IE7里可以這樣寫 filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50); 

IE6,IE7,IE8里都可以這樣寫 filter:alpha(opacity=50)

progid:DXImageTransform.Microsoft這種寫法很是難懂,看起來也煩,一般傾向filter:alpha(opacity=50)寫法;

看資料說前兩種寫法,是和MS的ActiveX技術一條路的,第三種看起來沒有ActiveX,但本質也還是ActiveX一路的;這個可以在安全選項里面禁掉所有的ActiveX試試,包括這個濾鏡在內的所有IE濾鏡立刻就無效;

DIV背景透明有兩種

一種是DIV本身和內部元素全部透明,另外是DIV透明,子元素不透明

第一種解決方法是用background: rgba(255, 255, 255, 0.82);設置DIV樣式,子元素就不會透明了

另外是將DIV外再添加一個父DIV,父DIV設置相對,原DIV設置絕對位置用filter:設置透明;其他子元素放到原DIV同級位置,其他元素也設置position:absolute ,這也是一種解決辦法

 

------------------------------

看了作者iefans的半透明失效文章,摘下了

png半透明失效的原因

 

IE7,IE8都是直接支持了png圖片的alpha的,這回我的IE8里的png半透明失效的原因不明,懷疑可能跟360Safe的某些動作有關,僅僅只是懷疑而已。

 

很多情況會影響到ie8的png效果,這回運氣比較好一點,在網上找到了方法,改了改注冊表,就解決了問題。這里我們列舉幾種可能導致png注冊表選項被破壞的情形。

 

1.(原因:.png在瀏覽器沒有擴展值或出錯)

開始->運行-regedit,打開注冊表,HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet ExplorerEmbedExtnToClsidMappings看.png存不存在。如果.png不存在,鼠標點它的上一層,也就是EmbedExtnToClsidMappings,然后按鼠標右鍵新建項,輸入.png,然后點.PNG,雙擊默認值,在數值數據那粘貼“clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B”。

這是我上次成功的方法,這次不行了!

 

2.(原因:.png在系統中的文件損壞)

使用 開始->運行,輸入 “regsvr32 c:windowssystem32pngfilt.dll”

如果在注冊時出現 “已加載 c:windowssystem32pngfilt.dll,但沒有找到DllRegisterSever 輸入點。無法注冊這個文件”,則表明這個文件可能損壞了,你要去別的機子去Copy一個好的過來覆蓋。再進行一次注冊。

 

3.(原因:我們偉大的Apple公司的QuickTime程序干擾了注冊表)

開始->運行->regedit,啟動注冊表,找到HKEY_CLASSES_ROOTMIMEDatabaseContent Type

將其中中文名的以及亂碼的都刪除即可如[視頻/mp4]。

 

4.(原因:注冊表信息錯誤!我這次就是這個問題,合並注冊表后,下面的信息會自動覆蓋掉有問題的信息)

將下面的內容存成.reg文件,然后右鍵->合並。

 

Windows Registry Editor Version 5.00

 

;PNG file association fix for Windows XP

;Created on May 17, 2007 by Ramesh Srinivasan

 

[HKEY_CLASSES_ROOT.PNG]

“PerceivedType”=”image”

@=”pngfile”

“Content Type”=”image/png”

 

[HKEY_CLASSES_ROOT.PNGPersistentHandler]

@=”{098f2470-bae0-11cd-b579-08002b30bfeb}”

 

[HKEY_CLASSES_ROOTpngfile]

@=”PNG Image”

“EditFlags”=dword:00010000

“FriendlyTypeName”=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,

00,6f,00,6f,00,74,00,25,00,5c,00,73,00,79,00,73,00,74,00,65,00,6d,00,33,00,

32,00,5c,00,73,00,68,00,69,00,6d,00,67,00,76,00,77,00,2e,00,64,00,6c,00,6c,

00,2c,00,2d,00,33,00,30,00,35,00,00,00

“ImageOptionFlags”=dword:00000003

 

[HKEY_CLASSES_ROOTpngfileCLSID]

@=”{25336920-03F9-11cf-8FD0-00AA00686F13}”

 

[HKEY_CLASSES_ROOTpngfileDefaultIcon]

@=”shimgvw.dll,2″

 

[HKEY_CLASSES_ROOTpngfileshell]

@=”open”

 

[HKEY_CLASSES_ROOTpngfileshellopen]

“MuiVerb”=”@shimgvw.dll,-550″

 

[HKEY_CLASSES_ROOTpngfileshellopencommand]

@=”rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_Fullscreen %1″

 

[HKEY_CLASSES_ROOTpngfileshellopenDropTarget]

“Clsid”=”{E84FDA7C-1D6A-45F6-B725-CB260C236066}”

 

[HKEY_CLASSES_ROOTpngfileshellprintto]

 

[HKEY_CLASSES_ROOTpngfileshellprinttocommand]

@=”rundll32.exe C:\WINDOWS\system32\shimgvw.dll,ImageView_PrintTo /pt ”%1” ”%2” ”%3” ”%4”"

 

[HKEY_CLASSES_ROOTSystemFileAssociations.PNG]

“ImageOptionFlags”=dword:00000003

 

[-HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts.PNG]

 

[-HKEY_CLASSES_ROOTMimeDatabaseContent Typeimage/x-png]

 

[-HKEY_CLASSES_ROOTMimeDatabaseContent Typeimage/png]

 

[HKEY_CLASSES_ROOTMimeDatabaseContent Typeimage/x-png]

“Extension”=”.png”

“Image Filter CLSID”=”{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}”

 

[HKEY_CLASSES_ROOTMimeDatabaseContent Typeimage/x-pngBits]

“0″=hex:08,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,89,50,4e,47,0d,0a,1a,0a

 

[HKEY_CLASSES_ROOTMimeDatabaseContent Typeimage/png]

“Extension”=”.png”

“Image Filter CLSID”=”{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}”

 

[HKEY_CLASSES_ROOTMimeDatabaseContent Typeimage/pngBits]

“0″=hex:08,00,00,00,ff,ff,ff,ff,ff,ff,ff,ff,89,50,4e,47,0d,0a,1a,0a

 

[HKEY_CLASSES_ROOTCLSID{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}]

@=”CoPNGFilter Class”

 

[HKEY_CLASSES_ROOTCLSID{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}InProcServer32]

@=”C:\WINDOWS\system32\pngfilt.dll”

“ThreadingModel”=”Both”

 

[HKEY_CLASSES_ROOTCLSID{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}ProgID]

@=”PNGFilter.CoPNGFilter.1″

 

[HKEY_CLASSES_ROOTPNGFilter.CoPNGFilter]

@=”CoPNGFilter Class”

 

[HKEY_CLASSES_ROOTPNGFilter.CoPNGFilterCLSID]

@=”{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}”

 

[HKEY_CLASSES_ROOTPNGFilter.CoPNGFilter.1]

@=”CoPNGFilter Class”

 

[HKEY_CLASSES_ROOTPNGFilter.CoPNGFilter.1CLSID]

@=”{A3CCEDF7-2DE2-11D0-86F4-00A0C913F750}”

 

 

當PNG遭遇filter:alpha

 

IE系列的PNG問題是一個廣受詬病、由來已久、至今未較好解決的問題,從IE6的不支持到IE7/8的缺陷支持,算是有所進步,但還有很多不健全。比如大家可以試試當PNG遭遇filter:alpha的情況,非常奇怪的現象,PNG在IE7下出現黑色背景。

 

這個在藍色經典上有朋友說明了該問題,“出現背景變黑應該是給整個窗體設置了透明度導致,那么對於IE7(可能還包括IE8)來說,它雖然提供了對半透明PNG的支持,但這種支持是不健全的。這種不健全的一種表現就是,當你為半透明PNG圖片(或使用半透明PNG作為背景的元素)設置透明度時,PNG圖片的半透明部分會顯示為黑色(但不透明部分的顯示是正常的)。

值得一提的是,IE 實現透明度是通過其私有的 CSS 濾鏡的方式,而非標准的 CSS3 屬性。而且IE透明濾鏡本身就是存在 bug 的,當然這里就不多說了”

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com