2012-01-10 36 views
3

我有一個錯誤,我試圖縮小範圍,它證明是一個doozie。我正在做一個模式覆蓋,並在IE8出於某種原因,我可以點擊「通過」,焦點輸入和選擇下面的文本。怎樣才能點擊一個位置:固定;身高:100%;寬度:在IE8中覆蓋100%?

在IE9,FF,Chrome中一切正常。不幸的是,一個簡化的測試用例我在一起(如下所示)在IE8中工作得很好。有沒有人遇到過這個bug?希望能節省一些時間。謝謝!

<!DOCTYPE html> 
<html> 
    <head> 
     <style> 
      div { 
       background: pink; 
       position: fixed; 
       height: 100%; 
       width: 100%; 
       top: 0; 
       left: 0; 
       opacity: 0.5; 
       -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; 
      } 
     </style> 
    </head> 
    <body> 
     <input type="text" /> 
     <div></div> 
    </body> 
</html> 

回答

0

想通了,我使用rgba()而不是不透明,因爲我只需要背景具有透明度。

對於IE,它使用-ms-filter生成了漸變過濾器,這導致了問題。最終只用

background: url(/images/EBEBEBB3.png); 
background: rgba(255,255,255,.7); 
2

這個問題的根本原因是,IE不考慮半透明的背景是有效的點擊目標,因此點擊次數通過對元件下方通過。

對於IE,您必須具有純色背景或背景圖片才能捕獲元素點擊。正如您發現的,過濾器不起作用。

常見的做法是使用1x1透明GIF作爲IE的背景圖像。該元素將適當地捕獲點擊。

5

問題的確在於IE允許點擊在div的背景透明時流血。對我來說,這個功能無處不在:

只需使用base64編碼的1x1像素透明GIF作爲背景,就可以停止所有點擊/點擊(也在IE9和IE8上測試)。另外,這是純粹的CSS,不需要額外的圖像。

background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7); 
相關問題