Примечание: это, вероятно, зависит от браузера.
Размер элемента уровня блока (td, div и т. Д.), Если он не указан, будет только настолько большим, насколько это необходимо, в соответствии с пространством, занимаемым его содержимым. Если указано, он будет пытаться соответственно расширяться, за исключением , если содержимое больше, и в этом случае оно будет расширяться по мере необходимости.
В вашем примере ячейка содержит один символ (неразрывный пробел), который принимает размер одной строки. Следовательно, блочный элемент должен быть как минимум на 1 высоту строки; это не может принять меньший размер. Вот почему ваша декларация высоты была проигнорирована.
Вы можете использовать этот стиль:
line-height: 1px;
Это устанавливает высоту строки в 1px. Высота строки не является элементом, поэтому указанное выше правило не применяется.