IE8的有些特性,往往因為一些神秘的不明原因而導致失效。
昨又碰見了倆。其實這個也不是昨碰見的,好長一段時間了,只是一直沒花時間去解決它,到昨兒才去尋醫(yī)問藥。
先說第一個,filter:alpha失效。
癥狀是這樣的,在我的IE8,類似filter:alpha(opacity=35)這樣的CSS代碼并不能出現(xiàn)預期的半透明效果了,很是納悶。
在茫茫網(wǎng)海也沒有搜到對癥的偏方。
話說IE的濾鏡是個神奇的東西,寫法也是變來變?nèi)ァ?/p>
IE8里可以這樣寫 -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
IE7里可以這樣寫 filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);
IE6,7,8里都可以這樣寫 filter:alpha(opacity=50)
最后一種是我比較傾向的,因為簡短,我看著一堆progid:DXImageTransform.Microsoft就煩。
前兩種寫法,很明顯的是和MS的ActiveX技術(shù)一條路的,第三種看起來沒有ActiveX,但本質(zhì)也還是ActiveX一路的,不信你在安全選項里面禁掉所有的ActiveX試試,包括這個濾鏡在內(nèi)的所有IE濾鏡立刻就光榮犧牲了。
今次碰到的filter:alpha失效,我檢查了ActiveX是開著的,而且Flash都可以播放的,最后還是在安全選項里面七設(shè)八設(shè)了一通就可以了(直接降低安全級別到最低也可以),但是我也沒弄清楚到底是哪一個或者哪幾個選項跟它相關(guān)。
還是{opacity:0.5}好啊,IE啥時候支持噢。
再說第二個,png半透明失效。
IE7,IE8都是直接支持了png圖片的alpha的,這回我的IE8里的png半透明失效的原因不明,懷疑可能跟360Safe的某些動作有關(guān),僅僅只是懷疑而已。
這回運氣比較好一點,在茫茫網(wǎng)海搜到了一個偏方,按偏方所指,改了改注冊表,就解決了問題。
開始->運行-regedit,打開注冊表,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\EmbedExtnToClsidMappings\ 看.png存不存在。如果.png不存在,鼠標點它的上一層,也就是EmbedExtnToClsidMappings,然后按鼠標右鍵新建項,輸入.png,然后點.PNG,雙擊默認值,在數(shù)值數(shù)據(jù)那粘貼“clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B”。
這個偏方的網(wǎng)址是 http://hi.baidu.com/sofay/blog/item/0e8ade549cb24b50d00906ca.html (俺的IE8無法顯示png圖片?。闹心俏恍峙_講到了多處注冊表影響ie8 的png效果,列舉了幾種可能導致png注冊表選項被破壞的情形。
當PNG遭遇filter:alpha
IE系列的PNG問題是一個廣受詬病、由來已久、至今未較好解決的問題,從IE6的不支持到IE7/8的缺陷支持,算是有所進步,但還有很多不健全。比如大家可以試試當PNG遭遇filter:alpha的情況,PNG直接變黑底了,真黑!可以看藍色經(jīng)典上面的這一篇 http://bbs.blueidea.com/thread-2925490-1-1.html (非常奇怪的問題,PNG在IE7下出現(xiàn)黑色背景)。