IE CSS Bug系列:IE8中按鈕:active狀態背景移動

nighca發表於2013-09-23

伯樂線上導讀:IE 瀏覽器不支援很多 CSS 屬性是出了名的,即便在支援的部分中,也是有很多 Bug 的。Zoffix Znet 整理了 IE 中的 CSS 問題,有簡單的問題示例,也有解決方法。 這個系列共有 58 個指南,70 個解決方案。這篇由伯樂線上前端開發小組的@nighca 翻譯。(歡迎更多前端開發朋友來加入“前端開發小組。)

【提示】:IE CSS BUG 系列譯文正在進行中,後續或有改動和調整,請不要轉載本系列的譯文。

—————————————————————————–

影響的IE版本

這個bug影響IE8

表現

<button>及<input type=”submit”>的背景在:active狀態下會向左上偏移。

時間

2009.8.13 18:19:22

描述

儘管CSS規範宣告過:CSS2.1並沒有定義哪些屬性可以被用於表單控制元件及框架,或是怎樣通過CSS描述它們的樣式,但瀏覽器仍可能會將CSS屬性應用於之上。規範建議開發者將其視作實驗性的支援 (CSS2.1 Section 3.2 – UA Conformance) 。不過,與這個頁面(我發現該bug的地方)的作者觀點相同,我認為這確實是一個bug。我們來看演示!

演示
示例在這個頁面

HTML程式碼:

CSS 程式碼:

這裡IE8試圖顯得“聰明”一點,它將:active狀態下的背景作了移動來笨拙地模擬“按鈕按下”的效果。就是說,當你點選<button>或者<input type=”submit”>時,其背景會向左上偏移一點點。

 

解決方案

以下是上述bug的解決方法(以型別排序)

解決方法(條件註釋法)

該方法的時間

2009.8.13 18:40:49

可修復的的版本

所有受該bug影響的版本

描述

以毒攻毒——我們特別地針對IE8下修改:active狀態的background-position來修復這個bug。我們來看下:

修復bug的演示在

HTML程式碼:

CSS程式碼:

條件註釋程式碼:

:active狀態下的背景在每個方向上偏移了2px。與最初的:hover狀態(或正常狀態)的偏移相比,針對IE8的偏移會向右、向下多出1px,這樣,在我們的演示中background-position設定為1px -29px。

如果你跟我一樣希望為所有版本的IE使用一份樣式表(或者你想把對該bug的修復放在正常的樣式表中),只需在:active狀態下使用

副作用

這個方法的副作用是,如果使用者點選後將滑鼠移出按鈕或者雙擊按鈕,按鈕背景的移動還會被看到。因為這種情況很少發生,我覺得不必擔心它。我找到這個bug的頁面中,作者還列出了一種標記的方法,(我猜可能)不會產生這樣的副作用。不過,因為那個方法不適用於<input type=”submit”>,所以我沒有把它包含到這個頁面中。

相關文章