Spec-Zone.ru › CSS

CSS-свойство `width`

Базовая поддержка Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она поддерживается во всех браузерах с июля 2015 года.

Свойство width CSS задаёт ширину элемента. По умолчанию оно задаёт ширину области содержимого, но если для box-sizing задано значение border-box, оно задаёт ширину области границы.

Попробуйте

width: 150px;
width: 20em;
width: 75%;
width: auto;
<section class="default-example" id="default-example">
  <div class="transition-all" id="example-element">
    This is a box where you can change the width.
  </div>
</section>
#example-element {
  display: flex;
  flex-direction: column;
  background-color: #5b6dcd;
  height: 80%;
  justify-content: center;
  color: white;
}

Заданное значение width применяется к области содержимого, пока оно находится в пределах значений, определённых свойствами min-width и max-width.

  • Если значение width меньше значения min-width, то min-width переопределяет width.
  • Если значение width больше значения max-width, то max-width переопределяет width.

Примечание: Как геометрическое свойство, width также применяется к SVG-элементам <svg>, <rect>, <image> и <foreignObject>. Для <svg> значение auto вычисляется как 100%, а для других элементов — как 0. Процентные значения для <rect> отсчитываются относительно ширины области просмотра SVG. Значение CSS-свойства width переопределяет любое значение атрибута SVG width, заданное для элемента SVG.

Синтаксис

/* <length> values */
width: 300px;
width: 25em;

/* <percentage> value */
width: 75%;

/* Keyword values */
width: max-content;
width: min-content;
width: fit-content;
width: auto;
width: stretch;

/* function values */
width: fit-content(20em);
width: anchor-size(width);
width: anchor-size(--my-anchor inline, 120%);
width: calc-size(max-content, size / 2);

/* Global values */
width: inherit;
width: initial;
width: revert;
width: revert-layer;
width: unset;

Значения

<length>
Задаёт ширину в виде значения расстояния.
<percentage>
Задаёт ширину в процентах от ширины содержащего блока.
auto
Браузер вычислит и выберет ширину для указанного элемента.
max-content
Предпочтительная внутренняя ширина.
min-content
Минимальная внутренняя ширина.
fit-content
Использует доступное пространство, но не больше, чем max-content, то есть min(max-content, max(min-content, stretch)).
anchor-size()
Задаёт ширину относительно размера якорного элемента. При задании width элемента, позиционируемого относительно якоря, первый параметр по умолчанию равен ширине связанного якоря. Если функция применена к элементу, не позиционируемому относительно якоря, она задаёт ширину, равную резервному значению. Если резервное значение не определено, объявление игнорируется.
calc-size()
Задаёт ширину как изменённый внутренний размер.
fit-content(<length-percentage>)
Использует формулу fit-content, подставляя указанный аргумент вместо доступного пространства и ограничивая ширину согласно формуле min(maximum size, max(minimum size, <length-percentage>)).
stretch
Задаёт ширину блока отступов элемента равной ширине его содержащего блока. При этом блок отступов заполняет доступное пространство в содержащем блоке. В некотором смысле это работает подобно 100%, но полученный размер применяется к блоку отступов, а не к блоку, размер которого определяется свойством box-sizing.

Доступность

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

  • Пояснения MDN к руководству WCAG, пункт 1.4
  • [Понимание критерия успеха 1.4.4 W3C: понимание WCAG 2.0](https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-scale.html)

Формальное определение

Начальное значение auto
Применяется к всем элементам, кроме замещаемых строчных элементов, строк таблицы и групп строк
Наследуется нет
Проценты относительно ширины содержащего блока
Вычисленное значение процентное значение, или <code>auto</code>, или абсолютная длина
Тип анимации $1$, <a href="/en-US/docs/Web/CSS/Reference/Values/percentage#interpolation" title="Значения типа данных CSS <percentage> интерполируются как вещественные числа с плавающей точкой.">процентное значение</a> или calc();

Формальный синтаксис

width = 
  auto |
  <length-percentage [0,∞]> |
  min-content |
  max-content |
  fit-content |
  fit-content(<length-percentage [0,∞]>) |
  <calc-size()> |
  <anchor-size()>

<length-percentage> = 
  <length> |
  <percentage>

<calc-size()> = 
  calc-size( <calc-size-basis>, <calc-sum> )

<anchor-size()> = 
  anchor-size( [ <anchor-name> || <anchor-size> ]? , <length-percentage>? )

<calc-size-basis> = 
  <intrinsic-size-keyword> |
  <calc-size()> |
  any |
  <calc-sum>

<calc-sum> = 
  <calc-product> [ [ '+' | '-' ] <calc-product> ]*

<anchor-name> = 
  <dashed-ident>

<anchor-size> = 
  width |
  height |
  block |
  inline |
  self-block |
  self-inline

<calc-product> = 
  <calc-value> [ '*' <calc-value> | '/' <number> ]*

<calc-value> = 
  <number> |
  <dimension> |
  <percentage> |
  <calc-constant> |
  ( <calc-sum> )

<calc-constant> = 
  e |
  pi |
  infinity |
  -infinity |
  NaN

Примеры

Ширина по умолчанию

В этом примере показано базовое использование и значение auto по умолчанию.

HTML

Добавим два абзаца, один из которых будет иметь имя класса.

<p>The MDN community writes really great documentation.</p>
<p class="has-width">The MDN community writes really great documentation.</p>

CSS

Зададим всем абзацам золотистый фон, а для второго абзаца явно установим width в значение auto.

p {
  background: gold;
}
p.has-width {
  width: auto;
}

Результат

Поскольку по умолчанию width имеет значение auto, ширина обоих абзацев одинакова.

Использование единиц длины

В этом примере показаны значения ширины, заданные в единицах длины.

HTML

Добавим два элемента <div> с текстом.

<div class="px_length">Width measured in px</div>
<div class="em_length">Width measured in em</div>

CSS

Для элемента px_length зададим значение 200px, а для элемента em_length — ширину 20em. Кроме того, зададим обоим элементам разные значения background-color, color и border>, чтобы их можно было различить при отображении.

.px_length {
  width: 200px;

  background-color: red;
  color: white;
  border: 1px solid black;
}

.em_length {
  width: 20em;

  background-color: white;
  color: red;
  border: 1px solid black;
}

Результат

Ширина элемента px_length всегда будет равна 200px. Отображаемая ширина элемента em_length зависит от размера шрифта.

Использование процентов

В этом примере показано использование процентных значений.

HTML

Добавим один элемент <div> с текстом.

<div class="percent">Width in percentage</div>

CSS

Зададим width элемента равным 20% ширины его родительского контейнера.

.percent {
  width: 20%;

  background-color: silver;
  border: 1px solid red;
}

Результат

Использование внутренних размеров

В этом примере сравниваются max-content и min-content, а также рассматривается calc-size.

HTML

Добавим три абзаца с одинаковым содержимым, различающиеся только именами классов.

<p class="max-green">The MDN community writes really great documentation.</p>
<p class="min-blue">The MDN community writes really great documentation.</p>
<p class="min-pink">The MDN community writes really great documentation.</p>

CSS

Для width одного абзаца зададим значение max-content, для второго — min-content, а ширину третьего сделаем вдвое больше min-content с помощью функции calc-size(). Чтобы различать элементы, зададим каждому разные значения background-color и border-style.

p.max-green {
  width: max-content;

  background-color: lightgreen;
  border-style: dotted;
}

p.min-blue {
  width: min-content;

  background-color: lightblue;
  border-style: dashed;
}

p.min-pink {
  width: calc-size(min-content, size * 2);

  background-color: pink;
  border-style: solid;
}
@supports not (width: calc-size(min-content, size * 2)) {
  body::before {
    content: "Your browser doesn't support the calc-size() function yet.";
    background-color: wheat;
    display: block;
    text-align: center;
    padding: 1rem 0;
  }
}

Результат

В примере max-content ширина равна ширине текста. В примере min-content ширина равна ширине самого длинного слова. В примере calc-size() ширина вдвое больше min-content.

Использование ключевого слова stretch

В этом примере показано значение stretch внутри контейнера flex.

HTML

Добавим родительский контейнер с двумя дочерними элементами.

<div class="parent">
  <div class="child">text</div>
  <div class="child stretch">stretch</div>
</div>

CSS

Используем свойство display, чтобы сделать родительский элемент flex-контейнером, и зададим для width второго дочернего элемента значение stretch.

.parent {
  border: solid;
  margin: 1rem;
  display: flex;
}

.child {
  background: #00999999;
  margin: 1rem;
}

.stretch {
  width: stretch;
}
@supports not (width: stretch) {
  body::before {
    content: "Your browser doesn't support the stretch value yet.";
    background-color: wheat;
    display: block;
    text-align: center;
    padding: 1rem 0;
  }
}

Результат

По умолчанию ширина flex-элементов равна ширине их содержимого. Значение stretch позволяет элементу занять всю доступную ширину, при этом блок отступов элемента ограничивается шириной содержащего блока.

Использование функции anchor-size()

В этом примере показано использование функции anchor-size() для задания ширины элемента, позиционируемого относительно якоря; его ширина задана как кратное высоте якоря.

HTML

Добавим два элемента <div>: элемент anchor и элемент infobox, который мы позиционируем относительно якоря.

<div class="anchor">⚓︎</div>

<div class="infobox">
  <p>Infobox.</p>
</div>

CSS

Объявим элемент anchor <div> якорным, задав ему anchor-name. Для позиционируемого элемента зададим свойству position значение absolute и свяжем его с якорным элементом с помощью свойства position-anchor. Также зададим якорю абсолютные размеры height и width и определим ширину позиционируемого относительно якоря элемента равной ширине якоря, используя функцию anchor-size() в качестве значения свойства width. В дополнение зададим с помощью функции anchor-size() положение информационного блока по left, чтобы расстояние между якорем и информационным блоком составляло четверть высоты якоря.

.anchor {
  anchor-name: --my-anchor;
  width: 120px;
  height: 60px;

  font-size: 2rem;
  background-color: lightpink;
  text-align: center;
  align-content: center;
  outline: 1px solid black;
}

.infobox {
  position-anchor: --my-anchor;
  position: absolute;
  position-area: right;
  width: anchor-size(width);

  left: calc( anchor-size(height) / 4 )

  align-content: center;
  color: darkblue;
  background-color: azure;
  outline: 1px solid #dddddd;
}
body {
  padding: 5em;
}

@supports not (width: anchor-size(width)) {
  body::before {
    content: "Your browser doesn't support the anchor-size() function value.";
    background-color: wheat;
    display: block;
    text-align: center;
    padding: 1rem 0;
  }
}

Результат

Обратите внимание: ширина информационного блока всегда совпадает с шириной якорного элемента.

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

Спецификация
Модуль CSS Box Sizing, уровень 3
# propdef-width

Совместимость с браузерами

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS
width
1
12
1
3.5
1
18
4
10.1
1
1.0
4.4
1
anchor-size
125
125
147
111
26
125
147
83
26
27.0
125
26
auto
1
12
1
15
1
18
4
14
1
1.0
4.4
1
fit-content
46
22
1–48
79
79
94
3
33
15
15–35
11
7
2
46
25
18–48
94
4
33
14
14–35
11
7
1
5.0
1.5
1.0–5.0
46
4.4
4.4–48
11
7
1
fit-content_function
Нет
Нет
91
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
Нет
is_animatable
26
12
16
15
7
26
16
14
7
1.5
4.4
7
max-content
46
22
79
79
66
3
44
11
2
46
25
66
4
43
11
1
5.0
1.5
46
4.4
11
1
min-content
46
1–48
79
66
3
33
15–35
11
2
46
18–48
66
4
33
14–35
11
1
5.0
1.0–5.0
46
4.4–48
11
1
stretch
138
22
138
79
146
122
15
27
7
138
25
146
91
14
27
7
5.0
138
4.4
27
7

См. также

  • height
  • box-sizing
  • min-width, max-width
  • block-size, inline-size
  • Атрибут SVG width
  • Руководство «Введение в блочную модель CSS»
  • Модуль «Блочная модель CSS»
  • Модуль «Позиционирование относительно якорей в CSS»
  • Модуль «Значения и единицы CSS»

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/width

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API