элемент div в ячейке таблицы имеет некоторый интервал - PullRequest
6 голосов
/ 13 августа 2010

Хорошо, я знаю, что использовать таблицы для разметки плохо.Но у нас есть клиент, на котором установлено ie6 на всех рабочих станциях, и мы должны сделать сложный макет, который прекрасно работает на нем, чтобы чистое решение CSS не работало, поэтому мне пришлось делать это с таблицами.

ВотHTML-код, который у меня есть:

<body>
<table id="main_table">
  <tr>
    <td>
      <div class="content">Content</div>
    </td>
  </tr>
</table>
</body>

Вот CSS-код, который у меня есть:

body {
        margin:0;
        padding:0;
     }
#main_table {
        border-collapse:collapse;
        border-spacing:0;
        width:100%;
     }
#main_table td {
         margin:0;
         padding:0;
     }
#main_table div.content {
         margin:0;
         padding:0;
     }

И по какой-то таинственной причине между вершиной ячейки и диваном есть какое-то поле,Я абсолютно уверен, что все мои поля и отступы равны 0, но он все еще там.

Я попытался:

  • span вместо div, и проблема все еще там
  • используйте position:relative в ячейке таблицы и положение: абсолютное значение в div, но div всегда занимает свою позицию в левом верхнем углу браузера, а не в верхнем левом углу элемента

У кого-нибудь была подобная проблема в прошлом?Заранее благодарим за помощь.

РЕДАКТИРОВАТЬ: проблема не только в IE6, но во всех браузерах.

Ответы [ 9 ]

0 голосов
/ 06 апреля 2013

@ Gabriel Возможно, вы знаете, что все браузеры имеют некоторые настройки по умолчанию, и, когда мы не присваиваем стиль любому тегу, браузер присваивает стили по умолчанию этому конкретному тегу.Я бы посоветовал вам использовать «reset.css», который вы можете найти здесь в вашем проекте.даны четыре типа CSS, из которых «Сброс CSS» Эрика Мейера является лучшим.

0 голосов
/ 07 апреля 2013

Хорошо, похоже, я полностью забыл о получении ответа на этот вопрос, и кажется, что через 2 года некоторые люди все еще чувствуют необходимость добавлять новые ответы, поэтому здесь было решение моей проблемы (которую я разместил в комментарияхмой первоначальный вопрос)

Проблема заключалась в том, что моя ячейка имела некоторую высоту, а выравнивание по вертикали соответствовало среднему значению по умолчанию.Таким образом, весь div находился в середине ячейки и оставлял то, что выглядело как поле сверху.

Так что это не было реальной проблемой, только я больше не использовался для создания HTML-макета с таблицами.

Вот ответ на проблему ... Теперь, если кто-то может закрыть этот вопрос, чтобы предотвратить дальнейшие комментарии / ответы, было бы здорово ...;)

0 голосов
/ 13 августа 2010

Мое универсальное исправление для проблем с дополнением / полем в IE-6 заключалось в том, чтобы (потому что мы больше не поддерживаем его) предоставлять несоблюдению элемент контейнера присваиваемое IE свойство zoom со значением 100 % для запуска hasLayout. YMMV.

#main_table td div.content { zoom:100%; }
0 голосов
/ 06 апреля 2013

Использовали ли вы 'reset.css' в своем проекте? Поскольку в большинстве случаев, если мы не указываем никаких стилей для какого-либо элемента, в этих местах браузер использует настройки по умолчанию.

0 голосов
/ 13 августа 2010

Просто добавьте

body { line-height:0;}
0 голосов
/ 13 августа 2010

Да, у меня были похожие проблемы, в таблицах много встроенных правил, особенно в IE6. Единственное, что я мог исправить - это использовать div с CSS и иметь специальные правила IE6 для решения проблем с блочной моделью IE. Там могут быть некоторые специфические проблемы IE6, как этот: Проблема Internet Explorer в таблице с шагом 1 пиксель

0 голосов
/ 13 августа 2010

После того, как вы попробовали cellpadding / spacing. Я не могу проверить это, поскольку у меня нет IE6. Я даже больше не поддерживаю IE6, Microsoft прекратила его поддержку, и если они больше не будут его поддерживать, я тоже не собираюсь.

<table id="main_table" cellpadding="0" cellspacing="0">
0 голосов
/ 13 августа 2010

ie6 = враг мира. нет гарантии, но попробуйте что-то вроде «0px» вместо «0».

Также вы пробовали поставить <table cellspacing="0" cellpadding="0">?

Больше ничего не могу придумать.

Можем ли мы найти ссылку для игры?

0 голосов
/ 13 августа 2010

Я думаю, что вы хотите использовать #main_table tr td или, возможно, #main_table tbody tr td, чтобы добраться до ячеек и убрать их отступы и поля, но я не уверен на 100%. Правильно ли он отображается в других браузерах сейчас? Можете ли вы проверить, что ваши правила CSS применяются к вашим ячейкам с помощью чего-то вроде панели инструментов разработчика IE?

...