IE7: чрезмерная разница в форме для textarea - PullRequest
6 голосов
/ 09 февраля 2009

Я пытаюсь устранить ошибку IE7 в моем приложении. Вот код HTML / CSS

<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

Ответы [ 4 ]

7 голосов
/ 09 февраля 2009

Это похоже на ошибку унаследованного поля (похоже на ошибку с двойным полем с плавающей точкой, но отличается от нее). Текстовая область наследует поле от div вокруг формы. Положение - это все более подробно описывает .

Практические обходные пути:

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

Совершенно странно. Я на самом деле получаю 320px (= родительское поле div) в ie7.

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

РЕДАКТИРОВАТЬ: ОК, я не знаю, почему это работает, но работает это определенно ошибка:

<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>
3 голосов
/ 02 сентября 2011

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

3 голосов
/ 09 февраля 2009

Кажется, что это ошибка со стилем IE по умолчанию для

. Я полагаю, что внутренне IE разрабатывает наборы полей с использованием кода float и вызывает печально известную ошибку Double-margin .

Мне удалось победить ошибку, просто поместив оболочку

прямо в
.
...