Перейти к содержимому

Table layout fixed что это

  • автор:

Фиксированый стиль таблицы или Fixed Table Layouts

Как вы наверняка знаете, CSS свойство table-layout предназначено для управления режимом формирования ширины столбцов в таблице. Оно может принимать следующие значения: авто, фиксировано или наследственно. По умолчанию в браузерах для отображения таблицы используется стандартное поведение: браузер рассчитывает ширину строки как сумму ширины всех ячеек. Следом, по тому же принципу рассчитывает ширину 2-й строки, и если размеры какой-либо ячейки превышают размеры вышестоящей ячейки, перестраивает всю таблицу. Далее определяет ширину 3-й ячейки, 4-й и т.д. В случае если таблица имеет много, очень много рядов, расчет ширины может немного затянуться…

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

CSS

В CSS (таблицы каскадных стилей) с помощью свойства table-layout мы можем управлять какой режим формирования таблицы нам нужен. Речь идет собственно об этом:

table

image

Это свойство очень хорошо поддерживается и очень даже полезно, так как позволяет вам создавать более предсказуемую разметку под вашу таблицу. По умолчанию, это свойство установлено в значение авто, и это, наверно, известно большинству из вас. Но этот режим как по мне так очень ненадежный и непредсказуемый. Приведем пример:

Режим table-layout: fixed

Если теперь задействовать режим table-layout: fixed то можно уверенно получить вполне себе предсказуемый результат по месту.
В случае применения этого режима, расчет ширины столбцов идет по первой строчке и все последующие используют это значение. Может и звучит странновато для понимания, но на самом деле все просто, приведем пример:

image

Применение

Крис озадачился этим вопросом, так как ему хотелось. что бы его «Pen»ы (в переводе еще смешнея звучит) в лист вью на CodePen отображались в столбиках с унифицированой шириной и не портили ему всю картину, вот что у него получилось:

image

Он остался очень доволен этим.

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

image
image
image

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

Скорость

Что касается скорости, то говорят, что такой стиль формирования таблицы быстрейший, и это очевидно — бо остальные строки не анализируются и следовательно время генерации не зависит от длины таблицы как таковой.

Почтовики

Что касается использования в разных почтовых клиентах, то это свойство, согласно сервису мониторинга поддержки свойств CSS в почтовых клиентах, прекрасно поддерживается.

Заключение

Надеюсь, этот перевод кому-то действительно поможет лучше понять, как работает table-layout: fixed и подбросит идей по его использованию в своих проектах.

Кстати, у кого нибудь есть идеи, почему это свойство не используется по умолчанию?

CSS свойство table-layout

Свойство table-layout указывает алгоритмы, используемые для расположения ячеек таблицы, строк и колонок.

Свойство table-layout указывает два алгоритма — fixed и automatic.

Когда макет таблицы указан как «automatic», ширина таблицы зависит от ширины ее колонок.

Когда макет таблицы указан как «fixed», он использует ширину таблицы, указанную ширину колонок и значения атрибутов border и cellspacing.

Значение по умолчанию auto
Применяется К элементам, для которых значение display установлено как table или inline-table.
Наследуется Нет
Анимируемое Нет
Версия CSS2
DOM синтаксис object.style.tableLayout = «fixed»;

Синтаксис

table-layout: auto | fixed | initial | inherit;

Пример

html> html> head> title>Заголовок документа title> style> th, td < border: 2px solid #666; > table.t1 < table-layout: fixed; width: 40%; > style> head> body> h2>Пример свойства table-layout h2> h3>Table-layout: fixed; width: 20% h3> table class="t1"> tr> th>Страна th> th>Столица th> th>Город th> tr> tr> td>Россия td> td>Москва td> td>Санкт-Петербург td> tr> tr> td>Англия td> td>Лондон td> td>Манчестер td> tr> tr> td>Нидерланды td> td>Амстердам td> td>Хааге td> tr> table> body> html>

Пример с использованием алгоритмов “auto” и “fixed”:

Пример

html> html> head> title>Заголовок документа title> style> th,td < border: 2px solid #666; > table.t1 < table-layout: fixed; width: 250px; > table.t2 < table-layout: auto; width: 100%; > style> head> body> h2>Пример свойства table-layout h2> h3>Table-layout: fixed; width: 160px h3> table class="t1"> tr> th>Страна th> th>Столица th> th>Город th> tr> tr> td>Россия td> td>Москва td> td>Санкт-Петербург td> tr> tr> td>Англия td> td>Лондон td> td>Манчестер td> tr> tr> td>Нидерланды td> td>Амстердам td> td>Хааге td> tr> table> h3>Table-layout: auto; width: 100% h3> table class="t2"> tr> th>Страна th> th>Столица th> th>Город th> tr> tr> td>Россия td> td>Москва td> td>Санкт-Петербург td> tr> tr> td>Англия td> td>Лондон td> td>Манчестер td> tr> tr> td>Нидерланды td> td>Амстердам td> td>Хааге td> tr> table> body> html>

Значения

Значение Описание
auto Использует алгоритм автоматического размещения макета. Значение по умолчанию.
fixed Использует алгоритм фиксированного размещения макета. Ширина таблицы, колонка и первая строка ячеек устанавливают ширину таблицы и колонки.
initial Устанавливает свойство в значение по умолчанию.
inherit Значение элемента наследуется от родительского элемента.

Поддержка браузера

14.0+ 12.0+ 1.0+ 1.0+ 7.0+

table-layout¶

Свойство table-layout определяет, как браузер должен вычислять ширину ячеек таблицы, основываясь на её содержимом.

Демо¶

Колонки и таблицы

  • column-count
  • column-fill
  • column-gap
  • column-rule
  • column-rule-color
  • column-rule-style
  • column-rule-width
  • column-span
  • column-width
  • columns

Синтаксис¶

 1 2 3 4 5 6 7 8 9 10
/* Keyword values */ table-layout: auto; table-layout: fixed; /* Global values */ table-layout: inherit; table-layout: initial; table-layout: revert; table-layout: revert-layer; table-layout: unset; 

Значения¶

Браузер загружает всю таблицу, анализирует её для определения размеров ячеек и только после этого отображает.

Значение по-умолчанию: auto

Применяется к тегу или к элементу, у которого значение display установлено как table или inline-table .

Спецификации¶

  • Cascading Style Sheets Level 2 Revision 2 (CSS 2.2) Specification
  • CSS Level 2 (Revision 1)

Поддержка браузерами¶

Описание и примеры¶

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
 html> head> meta charset="utf-8" /> title>table-layouttitle> style> table  table-layout: fixed; /* Фиксированная ширина ячеек */ width: 100%; /* Ширина таблицы */ > .col1  width: 160px; > .coln  width: 60px; > style> head> body> table border="1"> col class="col1" /> col span="9" class="coln" /> tr> td>td> td>2012td> td>2013td> td>2014td> td>2015td> td>2016td> td>2017td> td>2018td> td>2019td> td>2020td> tr> tr> td>Нефтьtd> td>5td> td>7td> td>2td> td>8td> td>3td> td>34td> td>62td> td>74td> td>57td> tr> tr> td>Золотоtd> td>3td> td>6td> td>4td> td>6td> td>4td> td>69td> td>72td> td>56td> td>47td> tr> tr> td>Деревоtd> td>5td> td>8td> td>3td> td>4td> td>7td> td>73td> td>79td> td>34td> td>86td> tr> table> body> html> 

CSS стиль table-layout. Определение ширины ячеек с помощью table-layout

CSS стиль table-layout определяет, как браузеру нужно вычислять ширину ячеек таблицы, основываясь на ее содержимом.

Краткая информация по CSS-свойству table-layout

Значение по умолчанию auto
Наследуется Нет
Применяется К тегу или к элементу, у которого значение display установлено как table или inline-table.

Правила написания свойства table-layout

table-layout: auto | fixed

При выбранном значении auto браузер загружает всю таблицу, после чего анализирует ее для определения размеров ячеек и лишь после этого показывает на странице.

Объектная модель

Объект.style.tableLayout

Пример применения стиля table-layout

Проиллюстрируем работу table-layout на примере. Нам нужно, чтобы ширина ячеек не зависела от содержимого.

Применение свойства table-layout

     Пример CSS стиля table-layout table < table-layout: fixed; /* Фиксированная ширина ячеек */ width: 100%; /* Ширина таблицы */ >.col1 < width: 160px; >.coln  
201220132014
Доллар323537
Евро40 4244
Фунт435055

Популярные статьи

2D игра на Unity. Подробное руководство. Часть 1

  • unity

Адаптивный слайдер без Javascript на CSS3

  • слайдер

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *