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