Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Scaling background images

Наши волонтёры ещё не перевели данную статью на Русский. Присоединяйтесь к нам и помогите закончить эту работу!

The background-size CSS property makes it possible to adjust the size of background images, instead of the default behavior of tiling the image at its full size. You can scale the image upward or downward as desired.

Tiling a large image

Let's consider a large image, a 2982x2808 Firefox logo image. We want (for some reason likely involving horrifyingly bad site design) to tile four copies of this image into a 300x300 pixel square, resulting in this look:

This can be achieved using the following CSS:

.square {
  width: 300px;
  height: 300px;
  background-image: url(firefox_logo.png);
  border: solid 2px;
  text-shadow: white 0px 0px 2px;
  font-size: 16px;
  background-size: 150px;
}

There is no need to prefix background-size anymore, though you may consider adding some prefixed version of it if you are targeting very old browsers.

Stretching an image

You can also specify both the horizontal and vertical sizes of the image, like this:

background-size: 300px 150px;

The result looks like this:

Scaling an image up

On the other end of the spectrum, you can scale an image up in the background. Here we scale a 32x32 pixel favicon to 300x300 pixels:

.square2 {
  width: 300px;
  height: 300px;
  background-image: url(favicon.png);
  background-size: 300px;
  border: solid 2px;
  text-shadow: white 0px 0px 2px;
  font-size: 16px;
}

As you can see, the CSS is actually essentially identical, save the name of the image file.

Special values: "contain" and "cover"

Beside <length> values, the background-size CSS property offers two special size values, contain and cover. Let's take a look at these.

contain

The contain value specifies that regardless of the size of the containing box, the background image should be scaled so that each side is as large as possible while not exceeding the length of the corresponding side of the container. Try resizing this window using a browser that supports scaling background images (such as Firefox 3.6 or later) to see this in action in the live example below.

Example 1

HTML

<div class="bgSizeContain">
   <p>Try resizing this window. Right-click->This Frame->Open Frame in New Tab</p>
</div>

CSS

.bgSizeContain {
  height: 200px;
  background-image: url(https://mdn.mozillademos.org/files/8971/firefox_logo.png);
  background-size: contain;
  border: 2px solid darkgray;
  color: #000; text-shadow: 1px 1px 0 #fff;
}

Result

cover

The cover value specifies that the background image should be sized so that it is as small as possible while ensuring that both dimensions are greater than or equal to the corresponding size of the container.

Example 2

HTML

<div class="bgSizeCover">
   <p>Try resizing this window. Right-click->This Frame->Open Frame in New Tab</p>
</div>

CSS

.bgSizeCover {
  height: 200px;
  background-image: url('https://mdn.mozillademos.org/files/8971/firefox_logo.png');
  background-size: cover;
  border: 2px solid darkgray;
  color: #000; text-shadow: 1px 1px 0 #fff;

Result

See also

Метки документа и участники

 Внесли вклад в эту страницу: duncanmcdonald, mrstork, teoli, darajava, xfq, Jeremie, kscarfone, ethertank, anilkrishnashetty, Sheppy, kevnchu, arturex
 Обновлялась последний раз: duncanmcdonald,