table-layout

table-layout

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

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

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

Синтаксис

Синтаксис

Описание Пример
Указывает тип значения.
A && B Значения должны выводиться в указанном порядке. &&
A | B Указывает, что надо выбрать только одно значение из предложенных (A или B). normal | small-caps
A || B Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. width || count
[ ] Группирует значения. [ crop || cross ]
* Повторять ноль или больше раз. [,]*
+ Повторять один или больше раз. +
? Указанный тип, слово или группа не является обязательным. inset?
Повторять не менее A, но не более B раз.
# Повторять один или больше раз через запятую. #

Значения

Пример

table < table-layout: fixed; /* Фиксированная ширина ячеек */ width: 100%; /* Ширина таблицы */ >.col1 < width: 160px; >.coln

  2012 2013 2014 2015 2016 2017 2018 2019 2020
Нефть 5 7 2 8 3 34 62 74 57
Золото 3 6 4 6 4 69 72 56 47
Дерево 5 8 3 4 7 73 79 34 86

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

Объект.style.tableLayout

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

Каждая спецификация проходит несколько стадий одобрения.

  • Recommendation ( Рекомендация ) — спецификация одобрена W3C и рекомендована как стандарт.
  • Candidate Recommendation ( Возможная рекомендация ) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
  • Proposed Recommendation ( Предлагаемая рекомендация ) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
  • Working Draft ( Рабочий проект ) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
  • Editor’s draft ( Редакторский черновик ) — черновая версия стандарта после внесения правок редакторами проекта.
  • Draft ( Черновик спецификации ) — первая черновая версия стандарта.

Браузеры

В таблице браузеров применяются следующие обозначения.

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

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

Рецепты

Справочник CSS

  • !important
  • ::after
  • ::backdrop
  • ::before
  • ::first-letter
  • ::first-line
  • ::placeholder
  • ::selection
  • :active
  • :blank
  • :checked
  • :default
  • :disabled
  • :empty
  • :enabled
  • :first-child
  • :first-of-type
  • :focus
  • :focus-within
  • :fullscreen
  • :hover
  • :in-range
  • :indeterminate
  • :invalid
  • :lang
  • :last-child
  • :last-of-type
  • :link
  • :not
  • :nth-child
  • :nth-last-child
  • :nth-last-of-type
  • :nth-of-type
  • :only-child
  • :only-of-type
  • :optional
  • :out-of-range
  • :placeholder-shown
  • :read-only
  • :read-write
  • :required
  • :root
  • :target
  • :valid
  • :visited
  • @charset
  • @document
  • @font-face
  • @import
  • @keyframes
  • @media
  • @page
  • @supports
  • @viewport
  • align-content
  • align-items
  • align-self
  • all
  • animation
  • animation-delay
  • animation-direction
  • animation-duration
  • animation-fill-mode
  • animation-iteration-count
  • animation-name
  • animation-play-state
  • animation-timing-function
  • aspect-ratio
  • backdrop-filter
  • backface-visibility
  • background
  • background-attachment
  • background-blend-mode
  • background-clip
  • background-color
  • background-image
  • background-origin
  • background-position
  • background-position-x
  • background-position-y
  • background-repeat
  • background-size
  • block-size
  • border
  • border-bottom
  • border-bottom-color
  • border-bottom-left-radius
  • border-bottom-right-radius
  • border-bottom-style
  • border-bottom-width
  • border-collapse
  • border-color
  • border-image
  • border-left
  • border-left-color
  • border-left-style
  • border-left-width
  • border-radius
  • border-right
  • border-right-color
  • border-right-style
  • border-right-width
  • border-spacing
  • border-style
  • border-top
  • border-top-color
  • border-top-left-radius
  • border-top-right-radius
  • border-top-style
  • border-top-width
  • border-width
  • bottom
  • box-decoration-break
  • box-shadow
  • box-sizing
  • caption-side
  • caret-color
  • clear
  • clip
  • color
  • column-count
  • column-fill
  • column-gap
  • column-rule
  • column-rule-color
  • column-rule-style
  • column-rule-width
  • column-span
  • column-width
  • columns
  • content
  • counter-increment
  • counter-reset
  • cursor
  • direction
  • display
  • empty-cells
  • filter
  • flex
  • flex-basis
  • flex-direction
  • flex-flow
  • flex-grow
  • flex-shrink
  • flex-wrap
  • float
  • font
  • font-family
  • font-kerning
  • font-size
  • font-stretch
  • font-style
  • font-variant
  • font-weight
  • height
  • hyphens
  • image-rendering
  • justify-content
  • left
  • letter-spacing
  • line-clamp
  • line-height
  • list-style
  • list-style-image
  • list-style-position
  • list-style-type
  • margin
  • margin-bottom
  • margin-left
  • margin-right
  • margin-top
  • marks
  • max-height
  • max-width
  • min-height
  • min-width
  • mix-blend-mode
  • object-fit
  • opacity
  • order
  • orphans
  • outline
  • outline-color
  • outline-offset
  • outline-style
  • outline-width
  • overflow
  • overflow-x
  • overflow-y
  • padding
  • padding-block
  • padding-block-end
  • padding-block-start
  • padding-bottom
  • padding-inline
  • padding-inline-end
  • padding-inline-start
  • padding-left
  • padding-right
  • padding-top
  • page-break-after
  • page-break-before
  • page-break-inside
  • perspective
  • perspective-origin
  • place-content
  • pointer-events
  • position
  • quotes
  • resize
  • right
  • scroll-behavior
  • tab-size
  • table-layout
  • text-align
  • text-align-last
  • text-decoration
  • text-decoration-color
  • text-decoration-line
  • text-decoration-skip-ink
  • text-decoration-style
  • text-emphasis
  • text-emphasis-color
  • text-emphasis-position
  • text-emphasis-style
  • text-fill-color
  • text-indent
  • text-orientation
  • text-overflow
  • text-shadow
  • text-stroke
  • text-stroke-color
  • text-stroke-width
  • text-transform
  • top
  • transform
  • transform-origin
  • transform-style
  • transition
  • transition-delay
  • transition-duration
  • transition-property
  • transition-timing-function
  • unicode-bidi
  • user-select
  • vertical-align
  • visibility
  • white-space
  • widows
  • width
  • word-break
  • word-spacing
  • word-wrap
  • writing-mode
  • z-index
  • zoom

Источник

Таблицы

В предыдущей главе мы обсуждали вёрстку. И говорили про построение содержимого с позиции дизайна — как геометрическая структура вашего приложения меняет смысл его использования.

Но макет имеет определённое значение в разном контексте. В контексте таблиц это значит, как браузер определяет размеры столбцов и строк элемента table на основе содержимого каждой ячейки таблицы и CSS, который применяется браузером и вами.

Этот процесс воистину волшебный.

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

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

fixed. Пытается установить размер столбцов равномерно, если не указана конкретная ширина в пикселях. В этом случае размеры будут заданы точно, если у вас нет ошибок с математикой. Спецификация CSS.

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

Пример 1. Ширина не задана

Это заголовок некоторого объекта Бла-бла
Это заголовок другого объекта Бла-бла
Это заголовок некоторого объекта Бла-бла
Это заголовок другого объекта Бла-бла

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

Пример 2. Ширина в процентах

Теперь взглянем на тот же пример с шириной столбцов, установленных как 20% и 50%, соответственно.

Это заголовок некоторого объекта Бла-бла
Это заголовок другого объекта Бла-бла
Это заголовок некоторого объекта Бла-бла
Это заголовок другого объекта Бла-бла

Включить white-space: nowrap

В обоих случаях заданная нами ширина принимается во внимание, но лишь относительно. Это всегда так с auto , но в данном случае это так и для fixed , потому что вся ширина указана в процентах. Браузер говорит, «20% — это 2/7 от общего 20+50%», поэтому, когда таблица имеет ширину 1000px, первый столбец заканчивается на 284px, а второй столбец на 714px, примерно в соотношении 2:5 (это не будет точно 2:5 из-за cellspacing , cellpadding , border , border-spacing , border-collapse и т. д., округления и других ограничений).

Обратите внимание, что white-space: nowrap применяются к каждой ячейке, в случае auto это свойство компенсируется, но в случае fixed происходит наложение текста.

Пример 3: Ширина в разных единицах

Теперь взглянем на тот же пример с шириной столбцов, установленных как 400px и 70%, соответственно.

Это заголовок некоторого объекта Бла-бла
Это заголовок другого объекта Бла-бла
Это заголовок некоторого объекта Бла-бла
Это заголовок другого объекта Бла-бла

Хорошо. Поскольку ширина каждой таблицы 694px, у браузера нет никакой возможности чтобы столбцы соответствовали 400px и 70%×694px. Так что он делает всё от него зависящее.

В случае auto, заданная нами ширина принимается во внимание, но лишь относительно. Браузер сравнивает 400/694 с 70%×694 и делает всё от него зависящее (поведение варьируется от браузера к браузеру).

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

Табличные данные

Это курс по CSS, так что не буду тратить много времени. Главная причина использовать таблицы в приложении — это отображение табличных данных. Под табличными данными подразумевается то, что вы могли бы отобразить в виде матрицы.

Когда дело доходит до стилизации таблиц, есть некоторые хорошие общие правила:

  • Широкие таблицы должны быть в виде зебры или используйте :hover с фоновым цветом (или чем-то аналогичным), чтобы помочь глазам связать ячейки из одной строки.
  • Столбцы с числовыми данными должны быть выровнены по правому краю, так чтобы цифры были друг под другом.
  • Крайние справа столбцы, возможно, потребуют выравнивания, чтобы избежать рваного правого края (думаю, text-align: justify ).
  • При возможности, высота строк должна быть одинакова, чтобы было проще сканировать по вертикали (этот общий принцип известен в бизнесе как «вертикальный ритм» и он очень важен).

Таблицы как инструмент вёрстки

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

Если вы ориентируетесь на браузер Internet Explorer 10+, то используйте flex . Филипп Уолтон написал великолепное пособие по вертикальному центрированию через flexbox .

Глюки таблиц

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

Глюк 1: Ячейки таблицы не уважают overflow (table-layout: auto, Firefox, IE)

Это значит, что даже если вы используете table-layout: fixed и укажите ширину в пикселях, overflow: hidden не будет на самом деле работать для ячеек таблицы в любом браузере. Если вы используете table-layout: auto , то любые значения overflow не соблюдаются во всех браузерах.

Глюк 2. Ячейки таблицы не уважают относительное позиционирование (Firefox)

Ага. Вы правильно меня поняли. Вы идёте и применяете position: relative к ячейке таблицы, добавляете position: absolute к элементу внутри, а в Firefox вместо этого он будет позиционирован относительно ранее позиционированного родителя таблицы. Лентяй.

Об этом баге рапортовали в 2000 году.

Глюки; для тех, кому лень читать

Если при оценке вариантов вы верите, что используя элемент table идёте верным путём, просто убедитесь, что заключаете содержимое каждой ячейки в div . Таким образом у вас будет полный контроль над стилем каждой ячейки и в то же вы сможете использовать чрезвычайно мощный, хотя и запутанной движок вёрстки таблиц.

Дальнейшее чтение

Источник

Читайте также:  Зомби побеги сервера для css v34
Оцените статью