Блочная модель для встроенных и блочных элементов в таблице td - PullRequest
3 голосов
/ 22 января 2011

Я использую таблицу для отображения табличных данных, но мне нужно получить точный размер, чтобы содержимое не занимало больше места по вертикали, чем у меня есть.Кроме того, компоновка с использованием одной только css невозможна, потому что у меня десятки элементов.

Вот мой простой тестовый код:

<!DOCTYPE html>
<html lang="en">
<head>
<style>
table, td, tr, thead, tfoot, tbody, th, tf {
    border-collapse: collapse;
    margin: 0px;
    padding: 0px;
    border:0;
    line-height:16px;
}
</style>
</head>
<body>
    <table border="0" cellspacing="0" cellpadding="0">
        <tr style="height:16px">
        <td>
            <span style="font-size:10pt;">Here is some text</span>
        </td>
        </tr>
    </table>
</body>
</html>

По сути, я хочу, чтобы строка таблицы занималатолько 16px, однако, в этой конфигурации он в итоге занимает 17px.

При проверке элементов в FireBug он показывает интервал в 15px, но td и tr в 17, но без отступов, без границ и т. д ...

firebug table inline

В IE я получаю то же самое поведение, однако есть немного больше информации о моем таинственном дополнительном пикселе или двух, кажется, есть смещение на элементе span:

ie table inline offset

Наконец, я могу решить проблему, превратив мой элемент span в div, (или сделав элемент span display display: block или даже display: table-cell, который я наденуне очень понимаю).Поэтому мне действительно не нужна помощь в решении моей проблемы, но я хочу понять, почему встроенные элементы в ячейках таблицы в итоге занимают больше места, чем они должны.Я пробовал гугл и спецификацию w3c, но не смог найти ничего полезного.

1 Ответ

2 голосов
/ 22 января 2011

Может ли это быть что-то вроде высоты строки пролета?

Редактировать: я понял, что на самом деле не ответил на вопрос.Я немного поковырялся в Firebug (у меня Mac, поэтому в настоящее время нет доступа к IE), и похоже, что не сам промежуток влияет на высоту ячейки, а на высоту строки tdв конечном итоге контролировать высоту тд.Высота пролета составляет всего 14 пикселей.Я подозреваю, что это пустой текстовый узел (шоу в инструментах разработчика IE), который увеличивает высоту.Один из способов увидеть это - переместить спецификацию размера шрифта вверх на один или два узла, чтобы она также применялась к пустому текстовому узлу.По крайней мере, в FB это, кажется, исправляет это и демонстрирует, что промежуток не является проблемой.(Может быть, пустой текстовый узел не существует, если вы вместо этого используете div? Вам даже нужен span или div, или вы могли бы иметь свой текст прямо в td?)

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