The background-size
CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space.
The background-size
CSS property sets the size of the element's background image. The image can be left to its natural size, stretched, or constrained to fit the available space.
Spaces not covered by a background image are filled with the background-color
property, and the background color will be visible behind background images that have transparency/translucency.
/* Keyword values */ background-size: cover; background-size: contain; /* One-value syntax */ /* the width of the image (height becomes 'auto') */ background-size: 50%; background-size: 3.2em; background-size: 12px; background-size: auto; /* Two-value syntax */ /* first value: width of the image, second value: height */ background-size: 50% auto; background-size: 3em 25%; background-size: auto 6px; background-size: auto auto; /* Multiple backgrounds */ background-size: auto, auto; /* Not to be confused with `auto auto` */ background-size: 50%, 25%, 25%; background-size: 6px, auto, contain; /* Global values */ background-size: inherit; background-size: initial; background-size: revert; background-size: revert-layer; background-size: unset;
The background-size
property is specified in one of the following ways:
contain
or cover
.auto
.<length>
, a <percentage>
, or auto
. To specify the size of multiple background images, separate the value for each one with a comma.
contain
Scales the image as large as possible within its container without cropping or stretching the image. If the container is larger than the image, this will result in image tiling, unless the background-repeat
property is set to no-repeat
.
cover
Scales the image (while preserving its ratio) to the smallest possible size to fill the container (that is: both its height and width completely cover the container), leaving no empty space. If the proportions of the background differ from the element, the image is cropped either vertically or horizontally.
auto
Scales the background image in the corresponding direction such that its intrinsic proportions are maintained.
<length>
Stretches the image in the corresponding dimension to the specified length. Negative values are not allowed.
<percentage>
Stretches the image in the corresponding dimension to the specified percentage of the background positioning area. The background positioning area is determined by the value of background-origin
(by default, the padding box). However, if the background's background-attachment
value is fixed
, the positioning area is instead the entire viewport. Negative values are not allowed.
The computation of values depends on the image's intrinsic dimensions (width and height) and intrinsic proportions (width-to-height ratio). These attributes are as follows:
<gradient>
s have no intrinsic dimensions or intrinsic proportions.element()
function use the intrinsic dimensions and proportions of the generating element.Note: In Gecko, background images created using the element()
function are currently treated as images with the dimensions of the element, or of the background positioning area if the element is SVG, with the corresponding intrinsic proportion. This is non-standard behavior.
Based on the intrinsic dimensions and proportions, the rendered size of the background image is computed as follows:
background-size
are specified and are not auto
: The background image is rendered at the specified size.background-size
is contain
or cover
: While preserving its intrinsic proportions, the image is rendered at the largest size contained within, or covering, the background positioning area. If the image has no intrinsic proportions, then it's rendered at the size of the background positioning area. background-size
is auto
or auto auto
: contain
had been specified instead.Note: SVG images have a preserveAspectRatio
attribute that defaults to the equivalent of contain
; an explicit background-size
causes preserveAspectRatio
to be ignored.
background-size
has one auto
component and one non-auto
component: Note: Background sizing for vector images that lack intrinsic dimensions or proportions is not yet fully implemented in all browsers. Be careful about relying on the behavior described above, and test in multiple browsers to be sure the results are acceptable.
Initial value | auto auto |
---|---|
Applies to | all elements. It also applies to ::first-letter and ::first-line . |
Inherited | no |
Percentages | relative to the background positioning area |
Computed value | as specified, but with relative lengths converted into absolute lengths |
Animation type | repeatable list of simple list of length, percentage, or calc |
Let's consider a large image, a 2982x2808 Firefox logo image. We want to tile four copies of this image into a 300x300-pixel element. To do this, we can use a fixed background-size
value of 150 pixels.
<div class="tiledBackground"></div>
.tiledBackground { background-image: url(https://www.mozilla.org/media/img/logos/firefox/logo-quantum.9c5e96634f92.png); background-size: 150px; width: 300px; height: 300px; border: 2px solid; color: pink; }
See Resizing background images for more examples.
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
background-size |
31WebKit-based browsers originally implemented an older draft of CSS3background-size in which an omitted second value is treated as duplicating the first value; this draft does not include the contain or cover keywords. |
1212 | 4943.6–4 | 9 |
15WebKit-based browsers originally implemented an older draft of CSS3background-size in which an omitted second value is treated as duplicating the first value; this draft does not include the contain or cover keywords.9.5–15Opera 9.5's computation of the background positioning area is incorrect for fixed backgrounds. Opera 9.5 also interprets the two-value form as a horizontal scaling factor and, from appearances, a vertical clipping dimension. This has been fixed in Opera 10. |
53WebKit-based browsers originally implemented an older draft of CSS3background-size in which an omitted second value is treated as duplicating the first value; this draft does not include the contain or cover keywords. |
≤37WebKit-based browsers originally implemented an older draft of CSS3background-size in which an omitted second value is treated as duplicating the first value; this draft does not include the contain or cover keywords. |
1818WebKit-based browsers originally implemented an older draft of CSS3background-size in which an omitted second value is treated as duplicating the first value; this draft does not include the contain or cover keywords. |
494 |
14WebKit-based browsers originally implemented an older draft of CSS3background-size in which an omitted second value is treated as duplicating the first value; this draft does not include the contain or cover keywords.10.1–14Opera 9.5's computation of the background positioning area is incorrect for fixed backgrounds. Opera 9.5 also interprets the two-value form as a horizontal scaling factor and, from appearances, a vertical clipping dimension. This has been fixed in Opera 10. |
4.21WebKit-based browsers originally implemented an older draft of CSS3background-size in which an omitted second value is treated as duplicating the first value; this draft does not include the contain or cover keywords. |
1.01.0WebKit-based browsers originally implemented an older draft of CSS3background-size in which an omitted second value is treated as duplicating the first value; this draft does not include the contain or cover keywords. |
contain_and_cover |
3 | 12 | 3.6 | 9 | 10 | 5 | 37 | 18 | 4 | 14 | 4.2 | 1.0 |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/background-size