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
|
См. также
heightbox-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