Что нарушает эту раскладку стола?

0

Простой макет содержимого с использованием таблицы CSS, таблицы-строки и табличных ячеек:

<div style="display:table-cell; border:1px solid blue">
    some content  <!-- this line wrappend in <p> tag in next example -->
    <p>some content</p>
    ...
</div>

расположение двух столбцов с вложенной таблицей справа

Вышеприведенный пример, но с содержимым левой ячейки, помещенным в параграф (первая строка):

выше, но <p> разрыв потока правой таблицы-ячейки

Как вы можете видеть, после того, как тэг <p> помещается в левую ячейку, правая ячейка сдвигается вниз. Не имеет значения, использую ли я <p> или <h1>. Предположим, что он меняет высоту линии, а 1-я строка в соседней ячейке выровнена с ней.

Может ли кто-нибудь объяснить это поведение. Как я могу предотвратить смещение смежной ячейки?

Теги:

2 ответа

3
Лучший ответ

Он принимает поведение браузера по умолчанию "table-cell", вертикально выравнивая его, чтобы наследовать, наследовать, посередине. (Странно внизу на вашей странице).

Просто добавьте " vertical-align:top " в ваш CSS, чтобы убедиться в том, что исправлена ваша ситуация. jsFiddle раздвоен здесь

Например, Firefox [user agent html.css]:

tr {
  display: table-row;
  vertical-align: inherit;
}
tbody {
  display: table-row-group;
  vertical-align: middle;
}
thead {
  display: table-header-group;
  vertical-align: middle;
}
tfoot {
  display: table-footer-group;
  vertical-align: middle;
}
/* for XHTML tables without tbody */
table > tr {
  vertical-align: middle;
}
td { 
  display: table-cell;
  vertical-align: inherit;
  text-align: inherit; 
  padding: 1px;
}
  • 0
    Спасибо за показ рабочего примера. Документировано ли где-нибудь задокументировано принятие браузером поведения по умолчанию «ячейки таблицы» ?
  • 0
    Хамм? Какая-то диаграмма поведения браузера по умолчанию, это было бы неплохо, но это зависит от поставщика. Браузер может изменить это с версии на другую, и т. Д., И т. Д. Если это существует, я хочу знать.
0

Это похоже на то, что браузер добавляет к тегу <p> автоматически.

div[style*="table-cell"] p:first-child {
  margin: 0;
}
  • 0
    Пробовал, но Firefox игнорирует это.
  • 0
    @Milche Patern ваше исправление хорошо, ваше объяснение неверно. Выравнивание базовой линии связано с выравниванием текста ... не всегда так же, как и снизу. Также ... нижняя или базовая линия не является выравниванием по умолчанию для ячеек таблицы, это середина. Кроме того, вы бы увидели, если бы вы нарисовали рамку вокруг ячейки таблицы, содержащей таблицу, которая соответствует другой ячейке ... ну, я не могу прокомментировать ваше сообщение.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню