影響版本
該bug影響:IE8、IE7、IE6
表現
用’filter’方法修正了PNG透明度之後鏈接上背景圖像的透明部分不能點擊。
教程時間
2009.7.19 星期天 15:03:44
問題:我們用透明PNG圖片作為鏈接的背景並用filter方法解決了IE下的alpha透明度問題。結果IE又怎麼了?圖像的透明部分變得不能點擊了。讓我們來看看例子。
Demo
由於這個bug的天然特性,示例在一個獨立的頁面
HTML代碼
CSS代碼
條件注釋代碼
我們這裡有什麼呢?一個應用了display:block的鏈接(<a>),其background設置一個PNG格式的黑圓圈圖像, 除了黑圓圈之外的部分都為透明的。我們用只適合IE的filter屬性來修復IE重色的PNG透明部分。問題在於?IE當中圓圈的透明部分不可點擊。
解決方法
以下是以類型安排的解決上述bug的方法。
解決方法(Javascript方法)
解決日期
2009.07.19 15:17:23
解決浏覽器版本
所有受影響的版本
描述
我來告訴你一個小秘密吧:如果我們給我們的鏈接設置background的話這個bug就修復了…不過等一下,我們能這麼干嗎?我們先來看一下我們的示例。
由於這個bug的天然特性,示例在一個獨立的頁面上。
HTML代碼
CSS Code
條件注釋
嘿嘿開掛啦!我們在IE中將background設置為一個“圖像”,不過圖像的url()僅僅只是一個#號。更新:看到有用戶評論說用 about:blank怎麼樣。這裡實際上就是將background的url()設置為當前頁面上——沒錯,這樣會產生額外的HTTP請求,不過我覺得 這不值得擔心,因為那時候頁面已經緩存好了。IE的行為總是變幻莫測,這就是其中一個例子。
更新:就像一位評論者所指出的一樣。這個額外的HTTP請求可能會影響頁面的點擊率等問題。如果你擔心這個問題的話,你可以把 background鏈接的#號替換為你的CSS文件(這個文件也是被緩存的),如果覺得這還不夠徹底的話,建立一個透明GIF文件並把背景設為它。再補 充說明一下,如果這個解決方法只在條件注釋裡面實施的話,那個額外的請求只會在IE浏覽器裡面發生。
原文鏈接:http://haslayout.net/css/No-Transparency-Click-Bug