IE7 Display Bug, Magic Padding / Margin, которые не должны существовать - PullRequest
2 голосов
/ 05 февраля 2011

Предисловие : Извините, если этот вопрос должен был быть размещен на сайте-партнере.Сейчас их так много, что трудно сказать, что еще подпадает под юрисдикцию SO.

Проблема : У меня проблема с последовательными <div> элементами.Иногда между ними есть магический отступ / отступ, и я не могу понять, почему.

IE7 Волшебная ошибка дополнения http://img689.imageshack.us/img689/6239/ie7bug.png

Как видите, между моими пробеламиdiv заголовка контейнера и div телаПозвольте мне объяснить, как настроен мой DOM / CSS:

HTML

<div class="Product-IconView">
  <div class="PIV_TopCap"></div>
  <div class="PIV_Body">
      ...
  </div>
</div>

Простая настройка контейнера / дочернего элемента div, ничего сложного.

CSS

Верхняя крышка:

.PIV_TopCap
{
    margin: 0px;
    padding: 0px;
    height: 10px;

    line-height: 1px; /* For IE so the text doesn't make the div higher */
    overflow: hidden;

    background-repeat: no-repeat;
    background-image: url(/Images/Controls/IconView/PIV-Regular-Top.png);
}

Корпус:

.PIV_Body
{
    height: 266px;

    padding-left: 10px;
    padding-right: 10px;

    background-repeat: repeat-y;
    background-image: url(/Images/Controls/IconView/PIV-Regular-Body.png);
}

AsВы можете видеть, довольно простой CSS тоже, ничего особенного.Внутри тела находится еще одна серия <div> предметов, следуя тому же принципу, что и этот div (контейнерный div, сложенные потомки).Это не демонстрирует странное заполнение, подобное этому.

Я использовал инструмент разработчика в IE9 (с включенными стандартами IE7), чтобы осмотреть DOM и посмотреть, что может быть причиной этого (например, увеличение поля вверх).или что-то еще)

Как вы можете видеть здесь:

Подсветка тела http://img844.imageshack.us/img844/3448/ie7bug01.png Подсветка сверху http://img192.imageshack.us/img192/46/ie7bug02.png

Границы div целы и правильны.

Заключение Это очень странная ошибка, я видел ее в более раннем проекте и тоже не смог ее выяснить.Это действительно единственная проблема миграции IE7, с которой я столкнулся в этом проекте.Насколько я знаю, я очень близко следую Стандартам HTML (я знаю, что IE в некоторых случаях не уважает их, но я планирую сделать это как можно лучше).

Вопросы к вам:

  • Что я должен искать, что может вызвать это?
  • Я что-то не так делаю?Если так, как я могу это исправить?
  • Есть ли более простой / лучший способ сделать это?
  • Есть ли что-то очевидное, что мне не хватает?

Также

Если вам нужны разъяснения или дополнительная информация, пожалуйста, не стесняйтесь оставлять их в комментариях, я отвечу на них, когда увижу их.(Опубликуйте это поздно вечером в пятницу: o).

1 Ответ

1 голос
/ 07 февраля 2011

Нашел ответ, поэтому я опубликую его здесь для всех, кто обращается сюда за помощью в IE7.

Проблема была в font-size верхнего div.В то время как у меня установлено line-height: 1px;, механизм рендеринга по-прежнему выделяет 14px для шрифта 12px , это невидимое распределение / заполнение / поле / все, что выпадает через div даже при overflow: hiddenили строгие ограничения по размеру.

Просто убедитесь, что обе эти строки были в моем верхнем div (меньше, чем строка текста):

font-size: 1px; line-height: 1px;

.... решит проблему.

Кажется, IE7 не очень хорошо подчиняется высоте строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...