Высота ячейки таблицы - есть ли минимальный размер, который необходимо соблюдать? - PullRequest
3 голосов
/ 07 декабря 2011

Ниже приведена таблица 3 x 3:

<html>
<body style="overflow:hidden;">
<style>
div.table_div {overflow:scroll;width:378px;height:117px;position:relative;}
table.TheTable {width:361px;height:100px;table-layout:fixed;border-collapse:collapse;border:1px solid #000000;}
td.TheTableColumnCell {text-overflow:ellipsis;overflow:hidden;white-space:nowrap;border:1px solid #000000;}
</style>

<div class="table_div" id="table_div">
<table class="TheTable">
<tr id='firstTr'>
<td class="TheTableColumnCell">&nbsp;</td>
<td class="TheTableColumnCell">&nbsp;</td>
<td class="TheTableColumnCell">&nbsp;</td>
</tr>
<tr>
<td class="TheTableColumnCell">&nbsp;</td>
<td class="TheTableColumnCell">&nbsp;</td>
<td class="TheTableColumnCell">&nbsp;</td>
</tr>
<tr>
<td class="TheTableColumnCell">&nbsp;</td>
<td class="TheTableColumnCell">&nbsp;</td>
<td class="TheTableColumnCell">&nbsp;</td>
</tr>
</table>
</div>

</body>
</html>

Примечание:

a) Ширина таблицы составляет 361 пикселей, потому что: 119 пикселей для каждой ячейки (119 x 3 = 357). Затем добавьте 4 пикселя к четырем границам.

b) Высота таблицы составляет 100 пикселей, потому что: 32 пикселя для каждой ячейки (32 x 3 = 96). Затем добавьте 4 пикселя к четырем границам.

в) Тег div. Для моих настроек windows ширина / высота полосы прокрутки составляет 17 пикселей. Вот почему вы видите div ширину и высоту 378px (361 + 17) и 117px (100 + 17). Цель для div в том случае, если мне действительно нужно прокрутить (в моем примере 3x3 мне не нужно).

В итоге: это таблица 3x3 с фиксированной шириной / высотой. Если вы вырезаете и вставляете этот код в HTML-файл и открываете его в своем браузере, вы увидите полосы прокрутки, но ни одна из них не позволит вам прокручивать (потому что у меня установлены ширины / высоты, чтобы показывать все без прокрутки) .

Проблема:

Выполните следующие действия:

Вместо того чтобы делать высоту каждой ячейки 32px, сделайте их 16px. Таким образом, высота таблицы . Таблица должна быть изменена на 52px (вместо 100px). Высота для div.table_div должна быть изменена на 69px (вместо 117px) - опять моя высота полосы прокрутки 17px.

Вертикальная полоса прокрутки, хотя она всегда видна, теперь прокручивается. Я не могу соответствовать всем сейчас? Но я думал, что мои расчеты верны? Магическое число кажется 22px. Менее 22px (высота) я получаю полосу прокрутки, которая прокручивается. Больше 22px я получаю полосу прокрутки, которая не прокручивается. Если тег div правильно рассчитан, полосы прокрутки не должны прокручиваться. Как мне избежать этого для высоты менее 22px?

EDIT: переполнение: необходима прокрутка. Я вытащил этот HTML из большего набора кода. В реальном коде таблица намного больше. Тег div позволяет мне показывать определенное количество ячеек, и я могу прокручивать, чтобы увидеть остальные. Это когда я начал играть с ростом менее 22 пикселей, именно тогда я обнаружил проблему. Поскольку это портит некоторые другие вещи, которые я пытаюсь сделать.

Ответы [ 3 ]

2 голосов
/ 07 декабря 2011

Ваша проблема теперь стала размером шрифта / высотой строки:

http://jsfiddle.net/EZ6q2/1/

Вам потребуется уменьшить размер шрифта:

http://jsfiddle.net/EZ6q2/2/

или высота строки http://jsfiddle.net/EZ6q2/3/

в ответ на ваш комментарий

Пробел по-прежнему заполнен и будет считаться текстом в строке.Полное опустошение ячейки также решает проблему в Fire Fox.Остерегайтесь этого, так как некоторые браузеры могут полностью сворачивать пустые ячейки (я сталкивался с этим в некоторых старых браузерах, возможно, IE 6).Вверх

Упомянутый вами «отступ» - это высота строки.Из того, что я понимаю из спецификаций , это определяется метриками, содержащимися в самом шрифте, и по умолчанию является пропорцией размера шрифта, поэтому изменение размера шрифта работает.Изменение высоты строки дает абсолютный результат.

См. эту скрипку

1 голос
/ 07 декабря 2011

Я создал http://jsfiddle.net/EZ6q2/

С вашим HTML + CSS.

Я не вижу, в чем проблема, можете ли вы отредактировать ее в своем примере, а затем отредактировать свой вопрос с помощью исправленного JSfiddle?

Примечание
Я удалил свойство overflow:scroll из вашей таблицы, так как оно имеет фиксированную высоту / ширину.

1 голос
/ 07 декабря 2011

дубль

overflow:scroll 

off div.table_div

, если вы хотите, тоже, используйте горизонтальную полосу прокрутки и замените ее на

overflow-x:scroll

.высота немного больше, чтобы компенсировать размер полосы прокрутки (это около 26 пикселей в секунду)

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