Понимание display:table-cell; функционирующий

Обратите внимание, что я не пытаюсь решить какую-то конкретную проблему, но пытаюсь понять, что вызывает эту проблему.

Я установил width, height и display некоторых div, но настройки высоты/ширины не соблюдаются. Текст также смещается вниз.

http://jsfiddle.net/k7esv/

1) Почему он толкает текст вниз, когда height установлен в строке таблицы, НО когда height удаляется, он помещает текст вверху?

2) Почему настройки ширины/высоты не соблюдаются?

3) Почему установка свойства margin также не влияет на них?

http://jsfiddle.net/k7esv/1/


person Shawn Taylor    schedule 25.02.2012    source источник
comment
Немного поздно для вечеринки здесь, но просто чтобы уточнить для других: display: table-cell имитирует поведение реальной ячейки таблицы (все ячейки имеют одинаковую высоту, содержимое не может покинуть свой контейнер/ячейку, и ячейки не имеют полей, но они могут иметь отступы и границы). Кроме того, любые float, примененные к display: table-cell элементам, отменяют эффекты ячейки таблицы.   -  person Jakob Jingleheimer    schedule 14.02.2013


Ответы (2)


1) Кажется, это проблема рендеринга, специфичная для Firefox. Установка свойства vertical-align в div исправляет это. top, middle или bottom вроде все работает. Я сам не понимаю, что делает FF, когда есть height, но нет набора vertical-align; это может быть ошибка.

2) Ширина и высота учитываются, но на них распространяются правила размеров таблицы. Когда в таблице недостаточно места, чтобы дать каждой из ячеек указанную ширину, она даст больше места ячейкам с большим содержимым. Это то, что произошло с вашим примером. Если вы посмотрите на мой пример ниже, вы увидите, что когда родительский элемент шире, чем сумма ширин ячеек таблицы, ячейки учитывают ширину. Высота всегда должна работать (за исключением случая с рендерингом FF, о котором я упоминал выше).

3) Ячейки таблицы не имеют полей. Используйте интервалы между границами и display:table в родительском div.

http://jsfiddle.net/chad/k7esv/3/

person Chad von Nau    schedule 25.02.2012
comment
Я обновил свой ответ и свою скрипку, чтобы ответить на ваш первый вопрос. То, что вы видели, не происходит в WebKit, поэтому я сначала этого не заметил. - person Chad von Nau; 26.02.2012

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

Сказав это, может потребоваться добавить высоту, когда динамический контент обслуживается в разных ячейках, что означает, что их высота колеблется. Возможно, вы хотите, чтобы конкретная ячейка никогда не была меньше высоты X, что вступит в силу только тогда, когда в другой определенной ячейке будет меньше содержимого.

person mr_reamer    schedule 07.11.2012
comment
У меня была странная ячейка с заполнением, которое я не мог объяснить ... Я НЕ МОГУ понять это. После того, как я прочитал ваш ответ, у меня был момент, и я вернулся, чтобы обнаружить нижнее поле на другом элементе, который вызывал это. СПАСИБО! - person RevConcept; 14.05.2014