2009-02-09 3 views
6

Я пытаюсь разобраться с ошибкой IE7 в своем приложении. Вот код HTML/CSSIE7: чрезмерный запас в форме для 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/Opera/Webkit/IE6 это нормально, но в IE7 текстовое поле имеют 100px левое поле. Если у кого есть подсказка, чтобы исправить это, спасибо большое!

Вот скриншот IE7 отображения этого образца HTML:

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

+0

Какой тип doctype вы используете? – mbillard

ответ

4

Полностью странно. Я фактически получаю 320px (= родительский запас div) в ie7.

Вы можете переписать с ie7 только отрицательный запас, но это ужасно ...

EDIT: Хорошо, я понятия не имею, почему это работает, но это работает. это 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

Возможно, вы захотите обратить особое внимание на ** display: inline-block; ** – mbillard

3

Кажется, ошибка с IE по умолчанию стиль для < FIELDSET>. Мое предположение было бы в том, что внутри, IE - это стильные поля с использованием кода float и запускающего позорного Double-margin bug.

Мне удалось победить ошибку, просто положив обертку < div> непосредственно внутри < fieldset>.

7

Это похоже на унаследованную ошибку маржи (похожую, но отличную от двойной ошибки с поплавками). Текстовое поле наследует границу от div вокруг формы. Position Is Everything describes it in more detail.

Практические решения являются:

  • Дайте TEXTAREA отрицательного левый край -320px (для IE только, очевидно).
  • Поместите встроенный элемент перед текстовым полем, но внутри поля. Похоже, вы можете установить стиль для отображения: none, но элемент не может быть пустым.
  • Оберните текстовое поле в div/span/any-other-tag, если у него нет правила стиля, которое придает ему макет (я бы подумал, что форма или набор полей исправит его, но, по-видимому, они не «т).
3

другие (тоже ужасно) решение было бы добавить &nbsp; только перед <textarea> ... но ИМХО, я нормально с борьбой против грязных ошибок IE с drity решениями ... огнем с огнем, если вы будете ...;)

+0

Я немного расширил это:   , это было простое исправление и только показывает пространство на бедных душах, застрявших на XP. – Jake1164