width
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
The width CSS property sets an element's width. By default, it sets the width of the content area, but if box-sizing is set to border-box, it sets the width of the border area.
Try it
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;
}
The specified value of width applies to the content area so long as its value remains within the values defined by min-width and max-width.
- If the value for
widthis less than the value formin-width, thenmin-widthoverrideswidth. - If the value for
widthis greater than the value formax-width, thenmax-widthoverrideswidth.
Note:
As a geometric property, width also applies to the <svg>, <rect>, <image>, and <foreignObject> SVG elements, with auto resolving to 100% for <svg> and 0 for other elements, and percent values being relative to the SVG viewport width for <rect>. The CSS width property value overrides any SVG width attribute value set on the SVG element.
Syntax
/* <length> values */
width: 300px;
width: 25em;
width: anchor-size(width);
width: anchor-size(--my-anchor inline, 120%);
/* <percentage> value */
width: 75%;
/* Keyword values */
width: max-content;
width: min-content;
width: fit-content;
width: fit-content(20em);
width: auto;
width: stretch;
/* Global values */
width: inherit;
width: initial;
width: revert;
width: revert-layer;
width: unset;
Values
<length>-
Defines the width as a distance value.
<percentage>-
Defines the width as a percentage of the containing block's width.
auto-
The browser will calculate and select a width for the specified element.
max-content-
The intrinsic preferred width.
min-content-
The intrinsic minimum width.
fit-content-
Use the available space, but not more than max-content, i.e.,
min(max-content, max(min-content, stretch)). fit-content(<length-percentage>)-
Uses the fit-content formula with the available space replaced by the specified argument, i.e.,
min(max-content, max(min-content, <length-percentage>)). stretch-
Sets the width of the element's margin box to the width of its containing block. It attempts to make the margin box fill the available space in the containing block, so in a way behaving similar to
100%but applying the resulting size to the margin box rather than the box determined by box-sizing.
Accessibility
Ensure that elements set with a width aren't truncated and/or don't obscure other content when the page is zoomed to increase text size.
Formal definition
| Initial value | auto |
|---|---|
| Applies to | all elements but non-replaced inline elements, table rows, and row groups |
| Inherited | no |
| Percentages | refer to the width of the containing block |
| Computed value | a percentage or auto or the absolute length |
| Animation type | a length, percentage or calc(); |
Formal syntax
width =
auto |
<length-percentage [0,∞]> |
min-content |
max-content |
fit-content( <length-percentage [0,∞]> ) |
<calc-size()> |
<anchor-size()> |
stretch |
fit-content |
contain
<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> =
<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> ]*
<calc-value> =
<number> |
<dimension> |
<percentage> |
<calc-keyword> |
( <calc-sum> )
<calc-keyword> =
e |
pi |
infinity |
-infinity |
NaN
Examples
>Default width
p.gold {
background: gold;
}
<p class="gold">The MDN community writes really great documentation.</p>
Example using pixels and ems
.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;
}
<div class="px_length">Width measured in px</div>
<div class="em_length">Width measured in em</div>
Example with percentage
.percent {
width: 20%;
background-color: silver;
border: 1px solid red;
}
<div class="percent">Width in percentage</div>
Example using "max-content"
p.max-green {
background: lightgreen;
width: max-content;
}
<p class="max-green">The MDN community writes really great documentation.</p>
Example using "min-content"
p.min-blue {
background: lightblue;
width: min-content;
}
<p class="min-blue">The MDN community writes really great documentation.</p>
Stretch width to fill the containing block
HTML
<div class="parent">
<div class="child">text</div>
</div>
<div class="parent">
<div class="child stretch">stretch</div>
</div>
CSS
.parent {
border: solid;
margin: 1rem;
display: flex;
}
.child {
background: #00999999;
margin: 1rem;
}
.stretch {
width: stretch;
}
Result
Specifications
| Specification |
|---|
| CSS Box Sizing Module Level 4> # sizing-values> |
Browser compatibility
Loading…
See also
heightbox-sizingmin-width,max-widthblock-size,inline-sizeanchor-size()- SVG
widthattribute - Introduction to the CSS box model guide
- CSS box model module