Css layout table: table-layout — CSS: Cascading Style Sheets

Содержание

table-layout | htmlbook.ru

table-layout | htmlbook.ru

Значения свойств

Internet ExplorerChromeOperaSafariFirefoxAndroidiOS
6.0+8.0+1.0+7.0+1.0+1.0+1.0+1.0+

Краткая информация

Значение по умолчанию auto
НаследуетсяНет
ПрименяетсяК тегу <table> или к элементу, у которого значение display установлено как table или inline-table.
Ссылка на спецификацию http://www.w3.org/TR/CSS21/tables.html#propdef-table-layout

Версии CSS

Описание

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

Синтаксис

table-layout: auto | fixed | inherit

Значения

auto
Браузер загружает всю таблицу, анализирует ее для определения размеров ячеек и только после этого отображает.
fixed
Ширина колонок в этом случае определяется либо с помощью тега <col>, либо вычисляется на основе первой строки. Если данные о форматировании первой строки таблицы по каким-либо причинам получить невозможно, в этом случае таблица делится на колонки равной ширины. При использовании этого значения, содержимое, которое не помещается в ячейку указанной ширины, будет «обрезано» либо наложено поверх ячейки. Это зависит от используемого браузера, но в любом случае ширина ячейки меняться не будет. Для корректной работы этого значения обязательно должна быть задана ширина таблицы.
inherit
Наследует значение родителя.

Пример

HTML5CSS2.1IECrOpSaFx

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>table-layout</title>
  <style>
   table {
    table-layout: fixed; /* Фиксированная ширина ячеек */
    width: 100%; /* Ширина таблицы */
   }
   .col1 { width: 160px; }
   .coln { width: 60px; }
  </style>
 </head>
 <body>
  <table border="1">
   <col>
   <col span="9">
   <tr> 
    <td>&nbsp;</td>
    <td>2012</td><td>2013</td><td>2014</td><td>2015</td>
    <td>2016</td><td>2017</td><td>2018</td><td>2019</td>
    <td>2020</td>
   </tr>
   <tr> 
    <td>Нефть</td><td>5</td><td>7</td><td>2</td><td>8</td>
    <td>3</td><td>34</td><td>62</td><td>74</td><td>57</td>
   </tr>
   <tr>
    <td>Золото</td><td>3</td> <td>6</td><td>4</td><td>6</td>
    <td>4</td><td>69</td><td>72</td><td>56</td><td>47</td>
   </tr>
   <tr>
    <td>Дерево</td><td>5</td><td>8</td><td>3</td><td>4</td>
    <td>7</td><td>73</td><td>79</td><td>34</td><td>86</td>
   </tr>
  </table> 
 </body>
</html>

Браузеры

Internet Explorer до версии 7.0 включительно не поддерживает значение inherit.

Статьи по теме

О сайте

Помощь

Копирование материалов

Борьба с ошибками

Технологии

Поисковый плагин

Основные разделы

Статьи

Блог

Практикум

Цифровые книги

Форум

HTML

Самоучитель HTML

XHTML

Справочник по HTML

HTML5

CSS

Самоучитель CSS

Справочник по CSS

Рецепты CSS

CSS3

Сайт

Вёрстка

Макеты

Веб-сервер

htmlbook.ru использует хостинг timeweb

© 2002–2021 Влад Мержевич, по всем вопросам пишите по адресу [email protected]

Подпишитесь на материалы сайта по RSS

CSS table-layout



Пример

Настройка различных алгоритмов макета таблицы:

table.a {
    table-layout: auto;
    width: 180px;
}

table.b {
    table-layout: fixed;
    width: 180px;
}


Определение и использование

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

Совет: Основное преимущество табличной компоновки: Исправлено; является то, что таблица делает гораздо быстрее. На больших таблицах пользователи не увидят ни одной части таблицы до тех пор, пока браузер не выведет всю таблицу целиком. Таким образом, если вы используете табличную компоновку: Fixed, пользователи увидят верхнюю часть таблицы, пока браузер загружает и отображает оставшуюся часть таблицы. Это создает впечатление, что страница загружается намного быстрее!

Значение по умолчанию: auto
Inherited: no
Animatable: no. Читайте о animatable
Version: CSS2
Синтаксис JavaScript: object.style.tableLayout="fixed"

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

Номера в таблице указывают первую версию браузера, которая полностью поддерживает свойство.

Свойство
table-layout 14.0 5.0 1.0 1.0 7.0


Синтаксис CSS

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

Значения свойств

Значение Описание
auto Браузеры используют автоматический алгоритм макета таблицы. Ширина столбца задается самым широким неразрывным содержимым ячеек. Содержимое будет диктовать макет
fixed Устанавливает алгоритм фиксированного макета таблицы. Ширина таблицы и столбца устанавливается по ширине таблицы и Col или по ширине первой строки ячеек. Ячейки в других строках не влияют на ширину столбцов. Если в первой строке нет ширины, ширина столбцов делится равномерно по всей таблице, независимо от содержимого внутри ячеек
initial Присваивает этому свойству значение по умолчанию. (Читайте о initial)
inherit Наследует это свойство из родительского элемента. (Читайте о inherit)

Похожие страницы

CSS Справочник: CSS Table

HTML DOM Справочник: tableLayout Свойство


layout | HTML и CSS с примерами кода

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

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

Синтаксис

/* Keyword values */
table-layout: auto;
table-layout: fixed;

/* Global values */
table-layout: inherit;
table-layout: initial;
table-layout: unset;

Значения

auto
Браузер загружает всю таблицу, анализирует её для определения размеров ячеек и только после этого отображает.
fixed
Ширина колонок в этом случае определяется либо с помощью тега <col>, либо вычисляется на основе первой строки. Если данные о форматировании первой строки таблицы по каким-либо причинам получить невозможно, в этом случае таблица делится на колонки равной ширины. При использовании этого значения, содержимое, которое не помещается в ячейку указанной ширины, будет «обрезано» либо наложено поверх ячейки. Это зависит от используемого браузера, но в любом случае ширина ячейки меняться не будет. Для корректной работы этого значения обязательно должна быть задана ширина таблицы.

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

auto

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

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

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

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>table-layout</title>
    <style>
      table {
        table-layout: fixed; /* Фиксированная ширина ячеек */
        width: 100%; /* Ширина таблицы */
      }
      .col1 {
        width: 160px;
      }
      .coln {
        width: 60px;
      }
    </style>
  </head>
  <body>
    <table border="1">
      <col />
      <col span="9" />
      <tr>
        <td></td>
        <td>2012</td>
        <td>2013</td>
        <td>2014</td>
        <td>2015</td>
        <td>2016</td>
        <td>2017</td>
        <td>2018</td>
        <td>2019</td>
        <td>2020</td>
      </tr>
      <tr>
        <td>Нефть</td>
        <td>5</td>
        <td>7</td>
        <td>2</td>
        <td>8</td>
        <td>3</td>
        <td>34</td>
        <td>62</td>
        <td>74</td>
        <td>57</td>
      </tr>
      <tr>
        <td>Золото</td>
        <td>3</td>
        <td>6</td>
        <td>4</td>
        <td>6</td>
        <td>4</td>
        <td>69</td>
        <td>72</td>
        <td>56</td>
        <td>47</td>
      </tr>
      <tr>
        <td>Дерево</td>
        <td>5</td>
        <td>8</td>
        <td>3</td>
        <td>4</td>
        <td>7</td>
        <td>73</td>
        <td>79</td>
        <td>34</td>
        <td>86</td>
      </tr>
    </table>
  </body>
</html>

Что-то вроде "table-layout:fixed", но только для одного столбца таблицы



У меня есть проблема в том, что у меня есть очень большое значение внутри одной ячейки:

43003A005C00570069006E0064006F00770073005C00730079007300740065006D00330032005C0076006D00470075006500730074004C00690062002E0064006C006C00000043003A005C00500072006F006700720061006D002000460069006C00650073005C0056004D0077006100720065005C0056004D007700610072006500200054006F006F006C0073005C0076006D0053007400610074007300500072006F00760069006400650072005C00770069006E00360034005C0076006D0053007400610074007300500072006F00760069006400650072002E0064006C006C000000

Что он делает, так это то, что весь стол становится больше, чем должен.

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

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

/**
  * Returns a table with the values from a query
  */
function tableizeQryRes($arr) {
  $isFirst=true;
  $tbl = '<table border="1" cellpadding="2" frame="box" rules="all">';
  foreach ($arr as $key => $val) {
    //echo $key;
    if ($isFirst) {
      $tblHeader = '<tr align="center" valign="middle"><td></td>';
      $tblBody = '<tr><td>'.$key.'</td>';
      foreach ($val as $sub_key => $sub_val) {
        if ($sub_key == "Msg") {
          $tblHeader .= '<td>'.$sub_key.'</td>';
          $tblBody .= '<td>'.$sub_val.'</td>';
        } else {
          $tblHeader .= '<td>'.$sub_key.'</td>';
          $tblBody .= '<td>'.$sub_val.'</td>';
        }
      }
      $tblHeader .= '</tr>';
      $tblBody .= '</tr>';
      $tbl .= $tblHeader;
      $tbl .= $tblBody;
      $isFirst=false;
    } else {
      $tbl .= '<tr><td>'.$key.'</td>';
      foreach ($val as $sub_key => $sub_val) {
        if ($sub_key == "Msg") {
          $tbl .= '<td>'.$sub_val.'</td>';
        } else {
          $tbl .= '<td>'.$sub_val.'</td>';
        }
      }
      $tbl .= '</tr>';
    }
  }
  $tbl .= '</table>';

  echo '<div>';
  echo $tbl;
  echo '<br/>';
  echo '<br/>';
  echo '</div>';
}

Если я добавлю sth. как и style="word-wrap:break-word; width:40%" и table-layout:fixed , другие клетки также фиксируются и больше не корректируются.

BTW. : все столбцы имеют переменную длину (и насчитывают около 150 000 строк). Первые 5 столбцов маленькие, только 6. Один содержит сообщение, иногда с пробелом, иногда без него.

html css text html-table
Поделиться Источник Dobi     17 октября 2014 в 14:41

3 ответа


  • table-layout:fixed выпуск

    У меня есть table с фиксированной планировкой таблицы. В таблице есть 2 столбца. Если я установлю colspan=2 для первой строки, то для остальных строк он будет иметь одинаковую ширину. (Он не принимает указанную мной ширину.) Fiddle прилагается здесь <table border=1...

  • Table-layout:fixed различия рендеринга в Safari

    В основном проблема у меня заключается в том, что в Safari/Chrome он изменяет ширину моих столбцов, даже если я указал а) ширину таблицы, б) table-layout:fixed и c) конкретную ширину моей первой строки, которая при добавлении значений заполнения и границы складывается с указанной шириной таблицы....



5

Текстовый модуль CSS3 позволяет разбивать длинные слова так, чтобы они обтекали несколько строк, используя word-wrap: break-word . Однако в некоторых случаях может случиться так, что справа перед длинным словом появляется большой белый пробел, так как длинное неразрывное слово начинается в новой строке, хотя короткие слова могут следовать за длинным словом.

Один из способов обойти это-использовать white-space: pre-wrap и word-break: break-all , которые предотвратят образование длинных пробелов прямо перед длинным неразрывным словом.

Однако недостатком является то, что некоторые маленькие слова могут обернуться вокруг второй строки.

У вас есть два варианта: метод word-wrap , который может оставить большие пробелы перед длинным неразрывным словом, или метод whtie-space/word-break , который может оставить несколько маленьких слов, обернутых вокруг двух строк.

Я думаю, что это все, что вы можете сделать с CSS3. Все остальное потребует некоторого решения с помощью JavaScript.

table {
  border: 1px dotted blue;
  table-layout: fixed;
  width: 100%;
}
table td {
  border: 1px dashed blue;
  vertical-align: top;
}
table td.wrapping {
  width: 350px;
  white-space: pre-wrap;
  word-break: break-all
}
<table>
  <tr>
    <td>a regular table cell with some text</td>
    <td>some short words in the text andaverylongword to fill up the line 43003A005C00570069006E0064006F00770073005C00730079007300740065006D00330032005C0076006D00470075006500730074004C00690062002E0064006C006C00000043003A005C00500072006F006700720061006D002000460069006C00650073005C0056004D0077006100720065005C0056004D007700610072006500200054006F006F006C0073005C0076006D0053007400610074007300500072006F00760069006400650072005C00770069006E00360034005C0076006D0053007400610074007300500072006F00760069006400650072002E0064006C006C000000 and a few words at the end
    </td>
  </tr>
</table>

Поделиться Marc Audet     17 октября 2014 в 15:08



3

Попробуйте установить word-wrap:break-word для содержащего элемента.

Пример: jsFiddle

HTML:

<table>
    <tr>
        <td>Column One</td>
        <td>Column Two</td>
        <td>43003A005C00570069006Eetc...</td>
    </tr>
</table>

CSS:

table {
    table-layout:fixed;
    width:100%;
}

.wrap {
    width:40%;
    word-wrap:break-word;
}

Поделиться MrWhite     17 октября 2014 в 14:52



0

На firefox вы должны использовать "max-width" вместо "width", иначе он будет просто проигнорирован в таблице с "layout-table: auto".

Итак, если вы не хотите использовать "layout-table: auto", вы можете просто назначить такой класс столбцу, размер которого вы хотите ограничить

.wrap {
    word-wrap: break-word;
    max-width: 100px;
}

Поделиться Andrea Mauro     13 января 2015 в 09:27



Похожие вопросы:


Таблицы укладки-table-layout:fixed против td-width:20%

Около месяца назад я задал вопрос ( таблица переполняет Родительский div, когда содержимое td слишком велико ) относительно таблиц. Я получил ответ, который, казалось, работал отлично. Вчера я хотел...


min-width не работает с table-layout:fixed

Я пытаюсь использовать min-width для таблицы td, которая имеет характеристику table-layout:fixed, но это не работает : https://jsfiddle.net/c1qje0us / HTML : <BODY> <TABLE> <TR>...


Поведение изменения размера жидкости для таблицы без table-layout:fixed?

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


table-layout:fixed выпуск

У меня есть table с фиксированной планировкой таблицы. В таблице есть 2 столбца. Если я установлю colspan=2 для первой строки, то для остальных строк он будет иметь одинаковую ширину. (Он не...


Table-layout:fixed различия рендеринга в Safari

В основном проблема у меня заключается в том, что в Safari/Chrome он изменяет ширину моих столбцов, даже если я указал а) ширину таблицы, б) table-layout:fixed и c) конкретную ширину моей первой...


Странно table-layout:fixed; "bug" на WebKit

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


table-layout:fixed не расширяющиеся ячейки таблицы внутри абсолютной строки таблицы ширины 100% (элементы также не сворачиваются)

Для меня это не имеет никакого смысла, но опять же, я не очень близок к эксперту CSS (вероятно, даже не хороший новичок). Я использую relative / absolute , потому что я использую динамически...


Неправильная ширина столбца при использовании table-layout:fixed

В моем примере jsfiddle у меня есть две таблицы HTML. Они в основном одинаковы-один и тот же класс, одно и то же содержание, все. Единственное различие - это порядок строк. <style>...


Как изменить ширину столбца при использовании <display:column> и при использовании table-layout:fixed

Я указал ширину столбца, но не вижу никаких изменений в width.Please help me. Заранее спасибо. Мой код: <div style=height: auto;> <display:table style=width:100%; position:...


IE10 table-layout:fixed сломан, если используется colspan

Следующий HTML отлично отображается во всех распространенных браузерах, включая IE7-9, но не работает в IE10. Даже при запуске IE10 в режиме совместимости он терпит неудачу. <html>...

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;

Пример¶

<!DOCTYPE html>
<html>
  <head>
    <title>Заголовок документа</title>
    <style>
      th, td {
      border: 2px solid #666;
      }
      table.t1 {
      table-layout: fixed;
      width: 40%;  
      }
    </style>
  </head>
  <body>
    <h3>Пример свойства table-layout</h3>
    <h4>Table-layout: fixed; width: 20%</h4>
    <table>
      <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”:

Пример¶

<!DOCTYPE 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>
    <h3>Пример свойства table-layout</h3>
    <h4>Table-layout: fixed; width: 160px</h4>
    <table>
      <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>
    <h4>Table-layout: auto; width: 100%</h4>
    <table>
      <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 Значение элемента наследуется от родительского элемента.

table-layout. CSS стиль для определящий ширину ячеек таблицы

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

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

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

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

table-layout: auto | fixed

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

При значении fixed ширина колонок вычисляется на основе первой строки, либо определяется с помощью тега <col>. Если данные о форматировании первой строки таблицы по каким-либо причинам получить невозможно, то таблица делится на колонки равной ширины. При использовании значения fixed, содержимое, которое не помещается в ячейку указанной ширины, будет «обрезано» или наложено поверх ячейки (зависит от используемого браузера), но в любом случае ширина ячейки меняться не будет. Для корректной работы этого значения обязательно задавайте ширину таблицы!

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

Объект.style.tableLayout

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

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


<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Пример CSS стиля table-layout</title>
  <style>
   table {
    table-layout: fixed; /* Фиксированная ширина ячеек */
    width: 100%; /* Ширина таблицы */
   }
   .col1 { width: 160px; }
   .coln { width: 60px; }
  </style>
 </head>
 <body>
  <table border="1">
   <col>
   <col span="3">
   <tr> 
    <td> </td>
    <td>2012</td><td>2013</td><td>2014</td>
   </tr>
   <tr> 
    <td>Доллар</td><td>32</td><td>35</td><td>37</td>
   </tr>
   <tr>
    <td>Евро</td><td>40</td> <td>42</td><td>44</td>
   </tr>
   <tr>
    <td>Фунт</td><td>43</td><td>50</td><td>55</td>
   </tr>
  </table> 
 </body>
</html>

table-layout | Справочник CSS | schoolsw3.com



Пример

Установка различных алгоритмов сервировки таблиц:

table.a {
    table-layout: auto;
    width: 180px;
}

table.b {
    table-layout: fixed;
    width: 180px;
}

Редактор кода »

Определение и использование

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

Совет: Основное преимущество table-layout: fixed; заключается в том, что таблица визуализируется намного быстрее. В больших таблицах пользователи не увидят ни одной части таблицы, пока браузер не отобразит всю таблицу. Таким образом, если вы используете table-layout: fixed, пользователи будут видеть верхнюю часть таблицы, пока браузер загружает и отображает остальную часть таблицы. Это создает впечатление, что страница загружается намного быстрее!


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

Числа в таблице указывают первая версия браузер, который полностью поддерживает свойство.

Свойство
table-layout 14.0 5.0 1.0 1.0 7.0


CSS Синтаксис

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

Значения свойств

Значение Описание Воспроизвести
auto Браузеры используют автоматический алгоритм компоновки таблиц. Ширина столбца задается самым широким неразрывный содержимым в ячейках. Содержание будет диктовать макет Воспроизвести »
fixed Задает фиксированный алгоритм компоновки таблицы. ширина таблицы и столбца определяется шириной таблицы, а цвет, шириной первой строки ячеек. Ячейки в других строках не влияют на ширину столбцов. Если нет ширины присутствуют в первой строке, ширины столбцов делятся поровну по всей таблице, независимо от содержимого внутри ячеек Воспроизвести »
initial Устанавливает это свойство в значение индекса. Прочитать о initial Воспроизвести »
inherit Наследует это свойство от родительского элемента. Прочитать о inherit

Связанные страницы

CSS Учебник: CSS Таблица

HTML DOM Справочник: Свойство tableLayout


table-layout - CSS: каскадные таблицы стилей

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

ячеек, строк и столбцов.

 
сервировка стола: авто;
table-layout: фиксированный;


макет таблицы: наследовать;
сервировка стола: начальная;
table-layout: не установлен;
  

Значения

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

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

При использовании метода «фиксированного» макета вся таблица может быть отображена после загрузки и анализа первой строки таблицы. Это может ускорить отрисовку по сравнению с «автоматическим» методом компоновки, но последующее содержимое ячейки может не уместиться в предоставленной ширине столбца.Ячейки используют свойство overflow , чтобы определить, следует ли вырезать переполненное содержимое, но только если таблица имеет известную ширину; в противном случае они не переполняют ячейки.

Таблицы фиксированной ширины с переполнением текста

В этом примере используется фиксированный макет таблицы в сочетании со свойством width для ограничения ширины таблицы. Свойство text-overflow используется для применения многоточия к словам, длина которых слишком велика. Если бы макет таблицы был авто , таблица увеличилась бы, чтобы вместить ее содержимое, несмотря на указанную ширину .

HTML
  <таблица>
  
Ed Дерево
АльбертШвайцер
ДжейнFonda
УильямШекспир
CSS
  стол {
  table-layout: фиксированный;
  ширина: 120 пикселей;
  граница: сплошной красный 1px;
}

td {
  граница: 1 пиксель сплошного синего цвета;
  переполнение: скрыто;
  белое пространство: nowrap;
  переполнение текста: многоточие;
}  
Результат

Таблицы BCD загружаются только в браузере

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


Пример

Установить разные алгоритмы раскладки таблиц:

Таблица.стол {
-макет: авто;
ширина: 180 пикселей;
}

table.b {
table-layout: исправлено;
ширина: 180 пикселей;
}

Попробуй сам "

Определение и использование

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

Совет: Основное преимущество table-layout: фиксированное; это то таблица отрисовывается намного быстрее. На больших таблицах пользователи не увидят никакой части table, пока браузер не отобразит всю таблицу.Итак, если вы используете table-layout: исправлено, пользователи будут видеть верхнюю часть таблицы, пока браузер загружается и отображает остальную часть таблицы. Создается впечатление, что страница загружает намного быстрее!

Значение по умолчанию: авто
Унаследовано:
Анимация: нет. Прочитать о animatable
Версия: CSS2
Синтаксис JavaScript: объект .style.tableLayout = "фиксированный" Попробуй

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

Числа в таблице указывают первую версию браузера, полностью поддерживающую свойство.

Имущество
стол-макет 14,0 5,0 1.0 1.0 7,0


Синтаксис CSS

макет таблицы: авто | фиксированный | начальный | наследование;

Стоимость недвижимости

Значение Описание Сыграй
авто Браузеры используют алгоритм автоматической компоновки таблиц.Ширина столбца задается самым широким небьющимся содержимым в ячейках. Контент будет определять макет Играй »
фиксированный Задает алгоритм фиксированного макета таблицы. Устанавливается ширина таблицы и столбца. по ширине таблицы и столбца или по ширине первой строки ячеек. Ячейки в других строках не влияют на ширину столбцов. Если нет ширины в первой строке ширина столбцов делится поровну по таблице, независимо от содержимого ячеек Играй »
начальный Устанавливает для этого свойства значение по умолчанию.Читать про начальный Играй »
унаследовать Наследует это свойство от своего родительского элемента. Читать про наследство

Связанные страницы

Учебник

CSS: таблица CSS

Ссылка на HTML DOM: свойство tableLayout



стол-макет | CSS-уловки

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

  стол {
  table-layout: фиксированный;
}  

Как объясняется в спецификации CSS2.1, компоновка таблицы в целом - дело вкуса и может варьироваться в зависимости от выбора дизайна. Однако браузеры автоматически применяют определенные ограничения, которые определяют порядок расположения таблиц. Это происходит, когда для свойства table-layout установлено значение auto (по умолчанию). Но эти ограничения можно снять, если для table-layout установлено значение fixed .

Значения

  • авто : по умолчанию. Автоматический алгоритм браузера используется для определения расположения строк, ячеек и столбцов таблицы. Результирующий макет таблицы обычно зависит от содержимого таблицы.
  • фиксированный : с этим значением макет таблицы игнорирует содержимое и вместо этого использует ширину таблицы, любую заданную ширину столбцов, а также значения границ и интервалов между ячейками. Используемые значения столбцов основаны на ширине, определенной для столбцов или ячеек для первой строки таблицы.
  • наследовать : указывает, что значение унаследовано от значения table-layout его родительского элемента

Чтобы значение fixed оказало какое-либо влияние, для ширины таблицы необходимо установить значение, отличное от auto (значение по умолчанию для свойства width ). В демонстрациях ниже вся ширина таблицы установлена ​​на 100%, что предполагает, что мы хотим, чтобы таблица заполняла свой родительский контейнер по горизонтали.

Лучший способ увидеть эффекты алгоритма фиксированного макета таблицы - использовать демонстрацию.

См. Демонстрацию Pen Demo для свойства CSS table-layout Луи Лазариса (@impressivewebs) на CodePen.

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

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

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

См. Демонстрацию пера для свойства CSS table-layout Луи Лазариса (@impressivewebs) на CodePen.

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

См. Демонстрацию пера для свойства CSS table-layout с шириной столбца и переменным содержимым Луи Лазариса (@impressivewebs) на CodePen.

Теперь, если вы нажмете кнопку-переключатель, вы увидите, что столбцы настраиваются в соответствии с фиксированным макетом независимо от содержания. И снова происходит то же самое; размер первого столбца составляет 400 пикселей, затем остальные столбцы делятся поровну.Но на этот раз разница заметна, поскольку в одном из столбцов есть лишнее содержимое.

Как алгоритм фиксированного макета определяет ширину столбцов

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

См. Демонстрацию пера для макета таблицы CSS с ячейкой в ​​строке 1, заданной шириной, заданной Луи Лазарисом (@impressivewebs) на CodePen.

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

См. Демонстрацию пера для макета таблицы CSS с ячейкой в ​​строке 2, заданной шириной, заданной Луи Лазарисом (@impressivewebs) на CodePen.

В данном случае это вторая строка, ширина которой привязана к ее первой ячейке таблицы. Теперь, когда нажата кнопка-переключатель, ширина всех столбцов настраивается. Опять же, это связано с тем, что алгоритм фиксированного макета использует первую строку для определения ширины столбцов, и в конечном итоге ширина распределяется равномерно.

Преимущества алгоритма фиксированного макета

Эстетические преимущества использования table-layout: fixed должны быть очевидны из демонстраций выше. Но еще одно важное преимущество - производительность. Спецификация называет фиксированный алгоритм «быстрым» алгоритмом, и не зря. Браузеру не нужно анализировать все содержимое таблицы перед определением размера столбцов; ему нужно проанализировать только первую строку. В результате макет таблицы обрабатывается быстрее.

Сопутствующие объекты

Дополнительная информация

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

Хром Safari Firefox Опера IE Android iOS
1+ 1+ 1+ 7+ 5+ 2.1+ 3+

Макет веб-страницы таблицы с использованием свойства display в css

Итак, я использовал свойство CSS table display, чтобы получить макет таблицы на моем сайте.Теперь, прежде чем вы перейдете к использованию свойства 'float' или к тегу таблицы HTML, я предпочитаю макет таблицы CSS и считаю его лучше, и я принял решение. Вот HTML-код:

  

Заголовок 1

Заголовок 2

Что надеть сегодня

"Какое слово носить сегодня"

А вот CSS:

 .содержание
{
    отображение: таблица-столбец-группа;
    маржа сверху: 25 пикселей;
}

.main_col
{
    дисплей: таблица-столбец;
    фон: красный;
    ширина: 550 пикселей;
    отступ: 20 пикселей 15 пикселей;
}

.sub_col
{
    дисплей: таблица-ячейка;
    фон: зеленый;
    ширина: 350 пикселей;
    отступ: 20 пикселей 15 пикселей;
}

.blog
{
    дисплей: таблица-ячейка;
    фон: черный;
}

.blog h4
{
    отступ: 20 пикселей 0 пикселей;
    ширина: 250 пикселей;
}

.Новости
{
    дисплей: таблица-ячейка;
    фон: серый;
}

.daily_verse
{
    дисплей: таблица-ячейка;
}

.bible_topic
{
    дисплей: таблица-ячейка;
}

  

Проблема в том, что когда я использую свойство table-column в CSS, все в теге HTML под div main_col исчезает.

Макет таблицы - Попутный ветер CSS

Авто

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

Название Автор Просмотры
Введение в CSS Адам 858
Длинный и извилистый тур по истории UI-фреймворков и инструментов и их влияния на дизайн Адам 112
Введение в JavaScript Крис 1,280
  <таблица>
  
    
       Заголовок 
       Автор 
       Просмотры 
    
  
  
    
       Введение в CSS 
       Адам 
       858 
    
    
       Длинный и извилистый тур по истории платформ и инструментов пользовательского интерфейса и их влиянию на дизайн 
       Адам 
       112 
    
    
       Введение в JavaScript 
       Крис 
       1 280 
    
  
  

Fixed

Используйте table-fixed , чтобы таблица игнорировала содержимое и использовала фиксированную ширину для столбцов.Ширина первой строки задает ширину столбца для всей таблицы.

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

Название Автор Просмотры
Введение в CSS Адам 858
Длинный и извилистый тур по истории UI-фреймворков и инструментов и их влияния на дизайн Адам 112
Введение в JavaScript Крис 1,280
  <таблица>
  
    
       Заголовок 
       Автор 
       Просмотры 
    
  
  
    
       Введение в CSS 
       Адам 
       858 
    
    
       Длинный и извилистый тур по истории платформ и инструментов пользовательского интерфейса и их влиянию на дизайн 
       Адам 
       112 
    
    
       Введение в JavaScript 
       Крис 
       1 280 
    
  
  

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

Вы можете контролировать, какие варианты генерируются для утилит компоновки таблиц, изменив свойство tableLayout в разделе вариантов файла tailwind.config.js .

Например, эта конфигурация также будет генерировать варианты наведения и фокусировки:

 
  module.exports = {
    варианты: {
      продлевать: {
        
+ tableLayout: ['зависать', 'фокус'],
      }
    }
  }  

Если вы не планируете использовать утилиты компоновки таблиц в своем проекте, вы можете полностью отключить их, установив для свойства tableLayout значение false в разделе corePlugins вашего файла конфигурации:

 
  модуль.export = {
    corePlugins: {
      
+ tableLayout: ложь,
    }
  }  

макет таблицы · WebPlatform Docs

Сводка

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

Обзорная таблица

Начальное значение
авто
Относится к
Таблица и элементы inline-table
Унаследовано
Нет
Медиа
визуальный
Расчетное значение
Как указано
Анимационный
Нет
Свойство объектной модели CSS
объект.style.tableLayout

Синтаксис

  • стол-макет: авто
  • стол-раскладка: фиксированная
  • table-layout: наследовать

Значения

авто
По умолчанию. Ширина столбца задается самым широким небьющимся содержимым в ячейках столбца. Ширина таблицы и ее ячеек зависит от содержимого ячеек.
фиксированный
Ширина таблицы и столбца задается шириной элементов table и col или шириной первой строки ячеек.Это не зависит от содержимого ячеек. Отрисовка выполняется быстрее, поскольку пользовательский агент может начать выкладывать таблицу после получения всей первой строки. Ячейки в последующих строках не влияют на ширину столбцов.
унаследовать
Эта функция наследует свойство table-layout от родительского элемента.

Примеры

В этом примере показаны "автоматическая" и "фиксированная" раскладка таблицы. В режиме «авто» столбец растягивается, чтобы охватить самый большой неразрушимый элемент. С 'фиксированным' столбец получает определенную ширину, даже если содержимое может не умещаться.

  

table-layout: auto

ячейка 1, Lorem ipsum

ячейка 2

ячейка 3, приостановка в элитной лекции.

ячейка 4

table-layout: исправлено

ячейка 1, Lorem ipsum

ячейка 2

ячейка 3, Suspendisse in elit lectus.

ячейка 4

table-layout: исправлено со скрытым переполнением

ячейка 1, Lorem ipsum

ячейка 2

ячейка 3, приостановка в элитной лекции.

ячейка 4

Посмотреть живой пример

Вот CSS для стилизации таблицы выше.

 

Таблица {
    цвет границы: # F00;
    ширина: 400 пикселей;
    сервировка стола: авто;
}
table.fixed,
table.fixed2 {
    table-layout: фиксированный;
}
td {
    цвет границы: # 00F;
}
td.first {
    ширина: 50 пикселей;
}
table.fixed2 td {
    переполнение: скрыто;
}
п {
    маржа: 15px 0 3px 0;
}
td p {
    маржа: 3 пикселя;
}
  

Посмотреть живой пример

Банкноты

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

Связанные спецификации

CSS2.1, 17.5.2 Алгоритмы ширины таблицы: свойство «table-layout»
Рекомендация W3C

Атрибуты

CSS Grid - Верстка таблицы. Будьте там и будьте честны. | Веб

Сурма является соавтором Web Fundamentals

TL; DR

Если вы знакомы с Flexbox, Grid покажется вам знакомым.Рэйчел Эндрю отлично веб-сайт, посвященный CSS Grid, чтобы помочь вам получить начал. Сетка теперь доступна в Google Chrome.

Flexbox? Сетка?

За последние несколько лет CSS Flexbox стал широко использоваться и поддержка браузера выглядит действительно хорошо (если только вы не один из тех бедняг, которые должны поддерживать IE9 и ниже). Flexbox упростил множество сложных задач компоновки, например, равноудаленный интервал. между элементами, макеты сверху вниз или Святой Грааль волшебства CSS: вертикальное центрирование.

Но, увы, у экранов обычно есть второе измерение, о котором нам нужно беспокоиться. К сожалению, вы не сможете самостоятельно подобрать размер элементов. и вертикальный и горизонтальный ритм, просто используя только flexbox. Это где на помощь приходит CSS Grid.

CSS Grid находился в разработке и был отмечен флагом в большинстве браузеров более 5 лет и дополнительное время было потрачено на совместимость, чтобы избежать глючный запуск, как у Flexbox.Итак, если вы используете сетку для реализации макета в Chrome, скорее всего, вы получите тот же результат в Firefox и Safari. На на момент написания, реализация Grid в Microsoft Edge устарела ( то же, что уже было в IE11.) и обновление «на рассмотрении».

Несмотря на сходство концепции и синтаксиса, не думайте о Flexbox и Grid. как конкурирующие методы компоновки. Сетка организована в двух измерениях, а Flexbox выкладывается в один. Их совместное использование дает синергетический эффект.

Определение сетки

Для ознакомления с отдельными свойствами Grid настоятельно рекомендую Сетка на примере Рэйчел Эндрю или приемы CSS » Шпаргалка. если ты знакомы с Flexbox, многие свойства и их значение должны быть знакомые.

Давайте посмотрим на стандартную сетку из 12 столбцов. Классическая 12-колоночная макет популярен, так как число 12 делится на 2, 3, 4 и 6, и поэтому полезно для многих дизайнов. Реализуем такой макет:

Начнем с нашего кода разметки:

  

  

В нашей таблице стилей мы начинаем с расширения нашего body , чтобы он покрыл все окно просмотра и превращение его в контейнер сетки :

  html, body {
  ширина: 100вв;
  мин-высота: 100vh;
  маржа: 0;
  отступ: 0;
}
тело {
  дисплей: сетка;
}
  

Теперь мы используем CSS Grid.Ура!

Следующим шагом будет реализация строк и столбцов нашей сетки. Мы могли бы реализовать все 12 столбцов в нашем макете, но поскольку мы не используем каждый столбец, это сделало бы наш CSS излишне беспорядочным. Ради простоты, реализуем макет так:

Верхний и нижний колонтитулы имеют переменную ширину, а содержимое - переменное. оба измерения. Навигация также будет изменяться в обоих измерениях, но мы собираюсь наложить на него минимальную ширину 200 пикселей.(Почему? Чтобы показать особенности CSS Grid, конечно.)

В CSS Grid набор столбцов и строк называется дорожками . Давайте начнем с определяя наш первый набор треков, строк:

  body {
  дисплей: сетка;
  сетка-шаблон-строки: 150 пикселей автоматически 100 пикселей;
}
  

grid-template-rows принимает последовательность размеров, которые определяют отдельные строки. В этом случае мы даем первой строке высоту 150 пикселей, а последней - 100 пикселей. В среднем ряду установлено значение auto , что означает, что он будет адаптироваться к необходимому высота для размещения элементов сетки (дочерние элементы контейнера сетки ) в этот ряд.Поскольку наше тело растянуто на всю область просмотра, дорожка содержащий контент (желтый на картинке выше), по крайней мере, заполнит все доступное пространство, но будет увеличиваться (и заставлять документ прокручиваться), если это нужно.

Для столбцов мы хотим применить более динамичный подход: нам нужны как nav, так и контент будет расти (и сжиматься), но мы хотим, чтобы навигация никогда не сжималась ниже 200 пикселей и мы хотим, чтобы контент был больше, чем nav. В Flexbox мы использовали бы flex-grow и flex-shrink, но в Grid все немного иначе:

  body {
  дисплей: сетка;
  сетка-шаблон-строки: 150 пикселей автоматически 100 пикселей;
  сетка-шаблон-столбцы: minmax (200px, 3fr) 9fr;
}
  

Мы определяем 2 столбца.Первый столбец определяется с помощью minmax () функция, которая принимает 2 значения: минимальный и максимальный размер этой дорожки. (Это как min-width и max-width в одном.) Минимальная ширина, как мы обсуждалось ранее, 200 пикселей. Максимальная ширина - 3fr . fr - это привязка к сетке единица измерения, позволяющая распределить доступное пространство между элементами сетки. ( fr , вероятно, означает «дробная единица», но вскоре может также означать «свободную единицу».) Наши значения здесь означают, что оба столбца будут расти, чтобы заполнить экран, но Столбец содержимого всегда будет в 3 раза шире столбца навигации (при условии, что столбец навигации остается шире 200 пикселей).

Хотя размещение элементов нашей сетки еще не правильно, размер строки и столбцы ведут себя правильно и дают поведение, к которому мы стремились:

Размещение предметов

Одна из самых мощных функций Grid - возможность размещать предметы без что касается порядка DOM.(Хотя, поскольку программы чтения с экрана перемещаются по DOM, мы настоятельно рекомендуем, чтобы для обеспечения надлежащего доступа вы должны помнить о том, как вы меняете порядок элементов.) Если размещение вручную не выполняется, элементы размещаются в сетке в порядке DOM слева направо и сверху вниз. Каждый элемент занимает одну ячейку . Порядок заполнения сетки можно изменить с помощью сетка-автопоток .

Итак, как мы размещаем элементы? Возможно, самый простой способ разместить элементы сетки - это определяя, какие столбцы и строки они покрывают.Grid предлагает для этого два синтаксиса: В первом синтаксисе вы определяете начальную и конечную точки. Во втором вы определяете начальная точка и промежуток:

  заголовок {
  сетка-столбец: 1/3;
}
nav {
  сетка-ряд: 2 / пролет 2;
}
  

Мы хотим, чтобы наш заголовок начинался в первом столбце и заканчивался перед в третьем столбце. Наша навигация должна начинаться со второго ряда и охватывать всего 2 ряда.

Технически мы закончили реализацию нашего макета, но я хочу показать вам несколько удобные функции, которые предоставляет Grid, чтобы упростить размещение.В Первая особенность заключается в том, что вы можете назвать границы трека и использовать эти имена для размещение:

  body {
  дисплей: сетка;
  сетка-шаблон-строки: 150 пикселей [начало навигации] автоматически 100 пикселей [конец навигации];
  столбцы-шаблон-сетки: [начало-заголовка] minmax (200 пикселей, 3fr) 9fr [конец-заголовка];
}
header {
  столбец сетки: начало заголовка / конец заголовка;
}
nav {
  строка сетки: начало навигации / конец навигации;
}
  

Приведенный выше код даст тот же макет, что и предыдущий код.

Еще более мощной является функция именования целых регионов в вашей сетке:

  body {
  дисплей: сетка;
  сетка-шаблон-строки: 150 пикселей автоматически 100 пикселей;
  сетка-шаблон-столбцы: minmax (200px, 3fr) 9fr;
  сетка-шаблон-областей: "заголовок"
                      "навигационное содержимое"
                      "навигационный нижний колонтитул";
}
header {
  сетка: заголовок;
}
nav {
  область сетки: nav;
}
  

grid-template-area принимает строку разделенных пробелами имен, что позволяет разработчик присвоить каждой ячейке имя.Если две соседние ячейки имеют одинаковое имя, они собираются объединиться в одну и ту же область. Таким образом, вы можете предоставить больше семантики вашего кода макета и сделать медиа-запросы более интуитивно понятными. Опять же, это код сгенерирует тот же макет, что и раньше.

Есть еще?

Да, да, есть, слишком много, чтобы осветить в одном сообщении в блоге. Рэйчел Эндрю, которая также GDE, приглашенный Эксперт в рабочей группе CSS и работает с ними с самого начала. чтобы убедиться, что Grid упрощает веб-дизайн.Она даже написала книга об этом. Ее веб-сайт Grid By Example - ценный ресурс для знакомства с Grid. Многие думают, что Grid - это революционер шаг для веб-дизайна, и теперь он включен по умолчанию в Chrome, поэтому вы можете начать используя его сегодня.

.

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

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