Jump to content
  • 0

Отличия тега <table> и display:table-cell


Libiros
 Share

Question

Задумался вот над следующим:

В верстке в таблицу лучше заносить табличные данные (тег <table>), относится ли это к свойству display:table-cell и его подобным?

То есть, хочется мне грамотно отцентрировать, например, в блоке некоторые элементы по вертикали и я могу использовать табличную верстку, что нерационально, а могу задать диву table-cell и vertical-align:middle. Будет ли это правильным?

Что скажут специалисты и эксперты?

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

Отсюда

Указывает, что элемент представляет собой ячейку таблицы (тег <td> или <th>).

Из спецификации:

table, inline-table, table-row-group, table-column, table-column-group, table-header-group, table-footer-group, table-row, table-cell, and table-caption These values cause an element to behave like a table element (subject to restrictions described in the chapter on tables).

The computed value is the same as the specified value, except for positioned and floating elements (see Relationships between 'display', 'position', and 'float') and for the root element. For the root element, the computed value is changed as described in the section on the relationships between 'display', 'position', and 'float'.

Note that although the initial value of 'display' is 'inline', rules in the user agent's default style sheet may override this value. See the sample style sheet for HTML 4 in the appendix.

Эти значения ведут себя как табличный элемент.

То есть как табличный или элемент или являются им?

Link to comment
Share on other sites

  • 0

Если вы задумались над семантикой, то display: table; табличными данными не является, просто блок ведет себя как таблица.

Сам поддерживаю блочную верстку. Однако, иногда приходится центрировать элементы по центру какого-то блока и самый простой способ - display:table.

но

Получается так, что табличная верстка плоха множеством своих тегов и семантической нерациональностью и этого можно избежать, присваивая всем div'ам display:table и просто продолжать верстать в табличном стиле?

Link to comment
Share on other sites

  • 0

То есть как табличный или элемент или являются им?

Как табличный. В теории — чисто визуально (т.е. скринридеры не должны читать их, повторяя названия колонок перед каждым значением, хотя бывают исключения). И табличных DOM-свойств, типа коллекции rows и новомодной нативной сортировки, у элемента не появится (по идее, это очевидно). Больше того — банальные rowspan/colspan CSS-ом не воспроизвести (пока?).

Еще тонкий нюанс (закрепленный в спецификации) — для <table>, по историческим причинам, по умолчанию применяется модель border-box, а для произвольного элемента с display:table — content-box. Но в реальности у браузеров (как минимум, Хрома) с этим бывала путаница.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy