Stretch image for background css

HTML Stretch Background Image

This article provides HTML code to enable you to stretch a background image.

CSS3 introduced a new property — background-size — that enables you to change the size of background images. That means you can stretch your image horizontally, vertically, or both. You can resize it any way you wish.

For example, you can have the background image stretch (and contract) to whatever size the element is that it is applied against.

In the following example, we use provide background-size with a value of 100% 100% , which means that it is the same size of the element — regardless of how big the actual image is.

Stretching the Background Image for the Whole Page

You might need to set the and elements’ height property to 100% .

Increase the Size without «Stretching» the Image out of Proportion

The background-size property also accepts values that prevent the image from stretching out of proportion.

Читайте также:  Apache2 php resuming normal operation

Using background-size: cover

You can use background-size: cover to scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area.

Using this option will ensure that the image doesn’t get stretched out of proportion. Bear in mind, parts of the image may be hidden if the element has different proportions to its background image.

Using background-size: contain

You can use background-size: contain to scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area.

Using this option will ensure that none of the image is hidden as it scales up or down.

Using CSS Layers

Although the background-size property is the recommended way to stretch your background images, this property hasn’t always been around.

Before this property was invented, you needed to use a bit of trickery to acheive the «stretched background image» effect.

If for any reason you can’t/don’t want to use the background-size method, check out how to stretch a background image using layers.

Источник

Resizing background images with background-size

The background-size CSS property lets you resize the background image of an element, overriding the default behavior of tiling the image at its full size by specifying the width and/or height of the image. By doing so, you can scale the image upward or downward as desired.

Tiling a large image

Let’s consider a large image, a 2982×2808 Firefox logo image. We want (for some reason likely involving horrifyingly bad site design) to tile four copies of this image into a 300×300-pixel element. To do this, we can use a fixed background-size value of 150 pixels.

HTML

div class="tiledBackground">div> 

CSS

.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; > 

Result

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 32×32 pixel favicon to 300×300 pixels:

.square2  background-image: url(favicon.png); background-size: 300px; width: 300px; height: 300px; border: 2px solid; 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»

Besides 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 the example below to see this in action.

HTML

div class="bgSizeContain"> p>Try resizing this element!p> div> 

CSS

.bgSizeContain  background-image: url(https://www.mozilla.org/media/img/logos/firefox/logo-quantum.9c5e96634f92.png); background-size: contain; width: 160px; height: 160px; border: 2px solid; color: pink; resize: both; overflow: scroll; > 

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. Try resizing the example below to see this in action.

HTML

div class="bgSizeCover"> p>Try resizing this element!p> div> 

CSS

.bgSizeCover  background-image: url(https://www.mozilla.org/media/img/logos/firefox/logo-quantum.9c5e96634f92.png); background-size: cover; width: 160px; height: 160px; border: 2px solid; color: pink; resize: both; overflow: scroll; > 

Result

See also

Found a content problem with this page?

This page was last modified on May 24, 2023 by MDN contributors.

Your blueprint for a better internet.

Источник

background-size

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.

Try it

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.

Syntax

/* 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:

  • Using the keyword values contain or cover .
  • Using a width value only, in which case the height defaults to auto .
  • Using both a width and a height value, in which case the first sets the width and the second sets the height. Each value can be a , a , or auto .

To specify the size of multiple background images, separate the value for each one with a comma.

Values

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 .

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.

Scales the background image in the corresponding direction such that its intrinsic proportions are maintained.

Stretches the image in the corresponding dimension to the specified length. Negative values are not allowed.

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.

Intrinsic dimensions and proportions

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:

  • A bitmap image (such as JPG) always has intrinsic dimensions and proportions.
  • A vector image (such as SVG) does not necessarily have intrinsic dimensions. If it has both horizontal and vertical intrinsic dimensions, it also has intrinsic proportions. If it has no dimensions or only one dimension, it may or may not have proportions.
  • CSS s have no intrinsic dimensions or intrinsic proportions.
  • Background images created with the 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:

  • If both components of background-size are specified and are not auto : The background image is rendered at the specified size.
  • If the 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.
  • If the background-size is auto or auto auto :
    • If the image has both horizontal and vertical intrinsic dimensions, it’s rendered at that size.
    • If the image has no intrinsic dimensions and has no intrinsic proportions, it’s rendered at the size of the background positioning area.
    • If the image has no intrinsic dimensions but has intrinsic proportions, it’s rendered as if contain had been specified instead.
    • If the image has only one intrinsic dimension and has intrinsic proportions, it’s rendered at the size corresponding to that one dimension. The other dimension is computed using the specified dimension and the intrinsic proportions.
    • If the image has only one intrinsic dimension but has no intrinsic proportions, it’s rendered using the specified dimension and the other dimension of the background positioning area.

    Note: SVG images have a preserveAspectRatio attribute that defaults to the equivalent of contain ; an explicit background-size causes preserveAspectRatio to be ignored.

    • If the image has intrinsic proportions, it’s stretched to the specified dimension. The unspecified dimension is computed using the specified dimension and the intrinsic proportions.
    • If the image has no intrinsic proportions, it’s stretched to the specified dimension. The unspecified dimension is computed using the image’s corresponding intrinsic dimension, if there is one. If there is no such intrinsic dimension, it becomes the corresponding dimension of the background positioning area.

    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.

    Formal definition

    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 a repeatable list of

    Formal syntax

    Examples

    Tiling a large image

    Let’s consider a large image, a 2982×2808 Firefox logo image. We want to tile four copies of this image into a 300×300-pixel element. To do this, we can use a fixed background-size value of 150 pixels.

    HTML

    div class="tiledBackground">div> 

    CSS

    .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; > 

    Result

    Specifications

    Browser compatibility

    BCD tables only load in the browser

    See also

    Found a content problem with this page?

    This page was last modified on Jul 18, 2023 by MDN contributors.

    Your blueprint for a better internet.

    MDN

    Support

    Our communities

    Developers

    Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
    Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.

    Источник

Оцените статью