Свойство CSS `background-size`
Базовая поддержка Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и во многих версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Свойство background-size CSS задаёт размер фонового изображения элемента. Изображение может сохранять исходный размер, растягиваться или масштабироваться так, чтобы помещаться в доступное пространство.
Области, не покрытые фоновым изображением, заполняются цветом, заданным свойством background-color. Этот цвет будет виден за фоновыми изображениями с прозрачностью или полупрозрачностью.
Попробуйте
background-size: contain;
background-size: contain; background-repeat: no-repeat;
background-size: cover;
background-size: 30%;
background-size: 200px 100px;
<section id="default-example"> <div class="transition-all" id="example-element"></div> </section>
#example-element {
background-image: url("/shared-assets/images/examples/hand.jpg");
min-width: 100%;
min-height: 100%;
}
Синтаксис
/* 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;
Свойство background-size задаётся одним из следующих способов:
- С помощью ключевых слов
containилиcover. - С помощью значения ширины; в этом случае высота по умолчанию равна
auto. - С помощью значений ширины и высоты: первое задаёт ширину, второе — высоту. Каждое значение может быть
<length>,<percentage>илиauto.
Чтобы задать размер нескольких фоновых изображений, разделите значения для каждого из них запятыми.
Значения
-
contain - Масштабирует изображение до максимально возможного размера в пределах контейнера, не обрезая и не растягивая его. Если контейнер больше изображения, изображение будет мозаично повторяться, если только для свойства
background-repeatне задано значениеno-repeat. -
cover - Масштабирует изображение (с сохранением пропорций) до минимального размера, при котором оно полностью заполняет контейнер (то есть его высота и ширина полностью покрывают контейнер), не оставляя пустого пространства. Если пропорции фона отличаются от пропорций элемента, изображение обрезается по вертикали или горизонтали.
-
auto - Масштабирует фоновое изображение в соответствующем направлении, сохраняя его исходные пропорции.
-
<length> - Растягивает изображение в соответствующем измерении до указанной длины. Отрицательные значения недопустимы.
-
<percentage> - Растягивает изображение в соответствующем измерении до указанного процента от области позиционирования фона. Область позиционирования фона определяется значением свойства
background-origin(по умолчанию — областью внутренних отступов). Однако если для свойстваbackground-attachmentзадано значениеfixed, областью позиционирования вместо этого становится весь вьюпорт. Отрицательные значения недопустимы.
Исходные размеры и пропорции
Вычисление значений зависит от исходных размеров изображения (ширины и высоты) и исходных пропорций (отношения ширины к высоте). Эти свойства определяются следующим образом:
- Растровое изображение (например, JPG) всегда имеет исходные размеры и пропорции.
- Векторное изображение (например, SVG) не обязательно имеет исходные размеры. Если у него есть исходные размеры по горизонтали и вертикали, оно также имеет исходные пропорции. Если размеры отсутствуют или задан только один из них, пропорции могут быть как определены, так и не определены.
- CSS-градиенты
<gradient>не имеют исходных размеров и исходных пропорций. - Для фоновых изображений, созданных с помощью функции
element(), используются исходные размеры и пропорции элемента, на основе которого они созданы.
Примечание: В Gecko фоновые изображения, созданные с помощью функции element(), сейчас рассматриваются как изображения с размерами элемента или, если элемент является SVG, области позиционирования фона, и соответствующими исходными пропорциями. Такое поведение не соответствует стандарту.
Исходя из исходных размеров и пропорций, отображаемый размер фонового изображения вычисляется следующим образом:
-
Если заданы оба компонента
background-sizeи они не равныauto: фоновое изображение отображается в заданном размере. -
Если
background-sizeравноcontainилиcover: изображение отображается с сохранением исходных пропорций и с максимально возможным размером, при котором оно помещается в область позиционирования фона или покрывает её. Если у изображения нет исходных пропорций, оно отображается в размере области позиционирования фона. -
Если
background-sizeравноautoилиauto auto:- Если у изображения есть исходные размеры по горизонтали и вертикали, оно отображается в этом размере.
- Если у изображения нет исходных размеров и исходных пропорций, оно отображается в размере области позиционирования фона.
- Если у изображения нет исходных размеров, но есть исходные пропорции, оно отображается так, как если бы вместо него было задано
contain. - Если у изображения есть только один исходный размер и исходные пропорции, оно отображается в размере, соответствующем этому исходному размеру. Второй размер вычисляется на основе заданного размера и исходных пропорций.
- Если у изображения есть только один исходный размер, но нет исходных пропорций, оно отображается с использованием заданного размера и размера области позиционирования фона для другого измерения.
Примечание: У SVG-изображений есть атрибут
preserveAspectRatio, значение по умолчанию которого эквивалентноcontain; явное указаниеbackground-sizeприводит к игнорированиюpreserveAspectRatio. -
Если у
background-sizeодин компонентauto, а другой — неauto:- Если у изображения есть исходные пропорции, оно растягивается до заданного размера. Размер второго измерения вычисляется на основе заданного размера и исходных пропорций.
- Если у изображения нет исходных пропорций, оно растягивается до заданного размера. Размер второго измерения вычисляется на основе соответствующего исходного размера изображения, если он есть. Если такого исходного размера нет, используется соответствующий размер области позиционирования фона.
Примечание: Поддержка фоновых изображений на основе векторной графики без исходных размеров или пропорций пока реализована не полностью во всех браузерах. Будьте осторожны, полагаясь на описанное выше поведение, и проверяйте результат в нескольких браузерах.
Формальное определение
| Начальное значение | auto auto |
|---|---|
| Применяется к | всем элементам |
| Наследуется | нет |
| Проценты | относительно области позиционирования фона |
| Вычисленное значение | как задано, но относительные длины преобразуются в абсолютные |
| Тип анимации | повторяющийся список |
Формальный синтаксис
background-size = <bg-size># <bg-size> = [ <length-percentage [0,∞]> | auto ]{1,2} | cover | contain <length-percentage> = <length> | <percentage>
Примеры
Мозаичное отображение большого изображения
Рассмотрим большое изображение — логотип Firefox размером 2982 × 2808 пикселей. Нужно разместить четыре копии этого изображения мозаично в элементе размером 300 × 300 пикселей. Для этого можно задать фиксированное значение background-size, равное 150 пикселям.
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;
}
Результат
Другие примеры см. в разделе Изменение размера фоновых изображений.
Спецификации
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
background-size |
3
1Браузеры на основе WebKit изначально реализовали более ранний черновик CSS3background-size, в котором пропущенное второе значение считалось повторением первого; в этом черновике не было ключевых слов contain и cover. |
12
12
|
4
49
3.6–4
|
10
15Браузеры на основе WebKit изначально реализовали более ранний черновик CSS3background-size, в котором пропущенное второе значение считалось повторением первого; в этом черновике не было ключевых слов contain и cover.9.5–15В Opera 9.5 область позиционирования фона для фиксированных фонов вычислялась неправильно. Кроме того, Opera 9.5 интерпретировала форму с двумя значениями как коэффициент горизонтального масштабирования и, судя по всему, размер вертикальной обрезки. Это исправили в Opera 10. |
5
3Браузеры на основе WebKit изначально реализовали более ранний черновик CSS3background-size, в котором пропущенное второе значение считалось повторением первого; в этом черновике не было ключевых слов contain и cover. |
18
18Браузеры на основе WebKit изначально реализовали более ранний черновик CSS3background-size, в котором пропущенное второе значение считалось повторением первого; в этом черновике не было ключевых слов contain и cover. |
4
49
|
10.1
14Браузеры на основе WebKit изначально реализовали более ранний черновик CSS3background-size, в котором пропущенное второе значение считалось повторением первого; в этом черновике не было ключевых слов contain и cover.10.1–14В Opera 9.5 область позиционирования фона для фиксированных фонов вычислялась неправильно. Кроме того, Opera 9.5 интерпретировала форму с двумя значениями как коэффициент горизонтального масштабирования и, судя по всему, размер вертикальной обрезки. Это исправили в Opera 10. |
4.2
1Браузеры на основе WebKit изначально реализовали более ранний черновик CSS3background-size, в котором пропущенное второе значение считалось повторением первого; в этом черновике не было ключевых слов contain и cover. |
1.0
1.0Браузеры на основе WebKit изначально реализовали более ранний черновик CSS3background-size, в котором пропущенное второе значение считалось повторением первого; в этом черновике не было ключевых слов contain и cover. |
4.4
4.4Браузеры на основе WebKit изначально реализовали более ранний черновик CSS3background-size, в котором пропущенное второе значение считалось повторением первого; в этом черновике не было ключевых слов contain и cover. |
4.2
1Браузеры на основе WebKit изначально реализовали более ранний черновик CSS3background-size, в котором пропущенное второе значение считалось повторением первого; в этом черновике не было ключевых слов contain и cover. |
auto |
1 |
12 |
3.6 |
15 |
3 |
18 |
4 |
14 |
2 |
1.0 |
4.4 |
2 |
contain |
3 |
12 |
3.6 |
10 |
5 |
18 |
4 |
14 |
4.2 |
1.0 |
37 |
4.2 |
cover |
3 |
12 |
3.6 |
10 |
5 |
18 |
4 |
14 |
4.2 |
1.0 |
37 |
4.2 |
См. также
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/background-size