2012-01-19 62 views
1

檢查此頁面:http://jsbin.com/itufix與IE(頁面自動啓用IE7模式)。IE7輸入定位錯誤(粘滯!)

在這裏您可以找到示例演示內嵌元素(輸入和跨度)如何與呈現塊一起呈現。所有元素邊距和填充設置爲0. 如果您使用IE(IE8-9)的開發人員工具,則可能會注意到輸入顯示的偏移量爲:1.

任何人都可以解釋實際發生的情況以及如何解決此問題?

NOTES

  1. 添加浮動輸入解決這個問題,但是這是不是一種選擇。我需要完成這個沒有浮動。
  2. 輸入/ span和它的div父母屬性hasLayout值是真的!
  3. 歡迎與此錯誤相關的任何信息。

更新: 下面是使用樣式的更多示例:http://jsbin.com/itufix/13。每個領域都可以有它的說明,加上整個div.form-item可能會浮動(如果我需要多個領域在線)

+0

只要看看這個例子,我可以看到輸入上的內部填充小於跨度的填充。這可能會造成輕微的抵消。 – Deadlykipper

+0

這是什麼「內部填充」,你如何衡量它? – jrumbinas

+0

我開始把每個輸入到一個div和設置所有輸入屬性爲零,透明等...除字體。並且所有屬性都由容器div設置。所以你將永遠不會有任何問題crossbrowser與一些奇怪的填充或邊距,背景或任何 – ggzone

回答

2

如果你不能浮動input(爲什麼?),那麼你可以做這樣的:

*+html input { 
    margin-top: -1px; 
    margin-bottom: -1px; 
} 

http://jsbin.com/itufix/5

這是使用a CSS hack這樣的解決方法是在IE7只適用。在你的CSS

+0

關於輸入的更多信息。實際結構爲

,它有兩種模式:1.非浮動DIV內容(使用全寬); 2.浮動DIV內容。 – jrumbinas

+0

這是可以接受的黑客,謝謝。雖然它有一個缺點:輸入頂部/底部邊距必須謹慎設置,因爲它會制動IE樣式。 – jrumbinas

+0

確實如此,但緩解並不是特別困難。這裏有一個'margin:5px 0'的例子:http://jsbin.com/uwimok/edit#html,live。如果你能給我演示一下你的「實際結構」,我可能會找到一個更好的方法,讓它在其他瀏覽器和IE7之間看起來相同。 – thirtydot

0

看,我看到以下內容:

div.form-item{ 
    padding: 0 1px; 
} 

此更改爲padding:0;似乎卸下表單字段我的眼睛都填充。請參閱:

http://jsbin.com/ojeros/2/

還是我失去了一些東西?

+0

你錯過了這個錯誤發生在IE7中的事實。 – thirtydot

+0

我無法複製這個。使用JSBin它看起來在IE7/8/9中是一樣的,但我可能錯過了它。 – Mig