2009-02-09 77 views
6

我正試圖處理我的應用程序中的IE7錯誤。下面是HTML/CSS代碼IE7:textarea表單中的餘量過大

<div style="margin-left: 320px"> 
    <form method="post" action=""><fieldset> 
     <textarea name="prj_comment" id="prj_comment" rows="5" cols="50" 
        style="margin: 0; padding: 0"></textarea> 
    </fieldset></form> 
</div> 

在Firefox /歌劇/ WebKit的/ IE6它是好的,但在IE7 textarea的有100px的左邊距。 如果有人有一個小費糾正這一點,非常感謝!

這裏是IE7的顯示此示例HTML截圖:

http://daneel.net/pub/img/ie7_bug_decalage.jpg

+0

你使用什麼DOCTYPE? – mbillard 2009-02-09 17:02:10

回答

4

共怪異。我實際上在ie7中獲得了320px(=父div邊距)。

您可以用IE7只覆蓋切緣陰性,但是這太可怕了......

編輯: OK,我不知道爲什麼這個工作,但它的工作原理。這是defintely了一個錯誤:

<div style="margin-left: 320px; display:inline-block;"> 
    <form method="post" action=""><fieldset> 
     <textarea name="prj_comment" id="prj_comment" rows="5" cols="50" 
        style="margin: 0; padding: 0"></textarea> 
    </fieldset></form> 
</div> 
+0

你可能想把一些重點放在**顯示上:inline-block; ** – mbillard 2009-02-09 17:01:04

3

似乎與IE瀏覽器的默認樣式的<字段集的錯誤>。我的猜測是,在內部,IE使用float代碼對字段集進行風格設置,並觸發臭名昭着的Double-margin bug

我設法擊敗錯誤,只需將< div>直接放在< fieldset>內。

7

這看起來像繼承的保證金錯誤(類似但不同於浮動的雙重保證金錯誤)。 textarea繼承了窗體周圍div的邊距。 Position Is Everything describes it in more detail

實際解決方法是:

  • 給textarea的-320px的負左邊距(用於IE只,很明顯)。
  • 將一個內聯元素放在textarea之前,但放在fieldset中。它看起來像你可以設置樣式顯示:無,但元素不能爲空。
  • 將文本區域包裹在div/span/any-other-tag中,只要它沒有任何給它佈局的樣式規則(我實際上會認爲表單或字段集會修復它,但顯然他們不會「T)。
3

另外,(也是可怕的)解決方案是添加&nbsp;只是在<textarea>面前...... 但恕我直言,我行與drity解決方案...以毒攻毒如果戰鬥髒IE瀏覽器漏洞你會......;)

+0

我最終擴展了一點:<! - [if lt IE 8]>   ,這是一個簡單的修復,只是顯示了困在XP上的可憐靈魂的空間。 – Jake1164 2013-09-18 12:28:07