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 source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
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: unset;
background-size
property is specified in one of the following ways:
contain
or
cover
.
auto
.
<length>
,
<percentage>
,或
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 without cropping or stretching the image.
cover
Scales the image as large as possible without stretching the image. If the proportions of the image differ from the element, it is cropped either vertically or horizontally so that no empty space remains.
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>
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.
注意:
The behavior of
<gradient>
s changed in Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5). Before this, they were treated as images with no intrinsic dimensions, but with intrinsic proportions identical to that of the background positioning area.
注意:
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.
preserveAspectRatio
attribute that defaults to the equivalent of
contain
. In Firefox 43, as opposed to Chrome 52, an explicit
background-size
causes
preserveAspectRatio
to be ignored.
background-size
has one
auto
component and one non-
auto
component:
注意: 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.
If you use a
<gradient>
as the background and specify a
background-size
to go with it, it's best not to specify a size that uses a single
auto
component, or is specified using only a width value (for example,
background-size: 50%
). Rendering of
<gradient>
s in such cases changed in Firefox 8, and at present is generally inconsistent across browsers, which do not all implement rendering in full accordance with
the CSS3
background-size
specification
and with
the CSS3 Image Values gradient specification
.
.gradient-example {
width: 50px;
height: 100px;
background-image: linear-gradient(blue, red);
/* Not safe to use */
background-size: 25px;
background-size: 50%;
background-size: auto 50px;
background-size: auto 50%;
/* Safe to use */
background-size: 25px 50px;
background-size: 50% 50%;
}
Note that it's particularly not recommended to use a pixel dimension and an
auto
dimension with a
<gradient>
, because it's impossible to replicate rendering in versions of Firefox prior to 8, and in browsers not implementing Firefox 8's rendering, without knowing the exact size of the element whose background is being specified.
| 初始值 |
auto auto
|
|---|---|
| 适用于 |
所有元素。它还适用于
::first-letter
and
::first-line
.
|
| 继承 | no |
| 百分比 | relative to the background positioning area |
| 计算值 | as specified, but with relative lengths converted into absolute lengths |
| 动画类型 | repeatable list of simple list of length, percentage, or calc |
<bg-size>#where
<bg-size> = [ <length-percentage> | auto ]{1,2} | cover | containwhere
<length-percentage> = <length> | <percentage>
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;
}
见 Scaling background images 了解更多范例。
| 规范 | 状态 | 注释 |
|---|---|---|
|
CSS Backgrounds and Borders Module Level 3
The definition of 'background-size' in that specification. |
候选推荐 | 初始定义。 |
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
更新 GitHub 上的兼容性数据| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
background-size
|
Chrome
完整支持
3
|
Edge 完整支持 12 |
Firefox
完整支持
4
|
IE 完整支持 9 |
Opera
完整支持
10
|
Safari
完整支持
5
|
WebView Android
完整支持
2.3
|
Chrome Android
完整支持
18
|
Firefox Android 完整支持 4 |
Opera Android
完整支持
10.1
|
Safari iOS
完整支持
4.2
|
Samsung Internet Android
完整支持
1.0
|
contain
and
cover
|
Chrome 完整支持 3 | Edge 完整支持 12 | Firefox 完整支持 3.6 | IE 完整支持 9 | Opera 完整支持 10 | Safari 完整支持 5 | WebView Android 完整支持 37 | Chrome Android 完整支持 18 | Firefox Android 完整支持 4 | Opera Android 完整支持 14 | Safari iOS 完整支持 4.2 | Samsung Internet Android 完整支持 1.0 |
完整支持
见实现注意事项。
要求使用供应商前缀或不同名称。
background
background-attachment
background-clip
background-color
background-image
background-origin
background-position
background-position-x
background-position-y
background-repeat
background-size
border
border-bottom
border-bottom-color
border-bottom-left-radius
border-bottom-right-radius
border-bottom-style
border-bottom-width
border-color
border-image
border-image-outset
border-image-repeat
border-image-slice
border-image-source
border-image-width
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-style
border-top
border-top-color
border-top-left-radius
border-top-right-radius
border-top-style
border-top-width
border-width
box-shadow