background-size
Базовая строка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2020 года.
Свойство background-size CSS устанавливает размер изображения фона элемента. Изображение может быть оставлено в своем исходном размере, растянуто или ограничено для адаптации к доступному пространству.
Попробовать
Пространства, не покрытые изображением фона, заполняются свойством background-color, а цвет фона будет виден под изображениями фона, имеющими прозрачность/полупрозрачность.
Синтаксис
/* 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 |
|---|---|
| Применяется к | всем элементам. Он также применяется к ::first-letter и ::first-line. |
| Наследуется | нет |
| Проценты | относительно области размещения фона |
| Вычисленное значение | как указано, но относительные длины преобразованы в абсолютные |
| Тип анимации | повторяемый список |
Формальный синтаксис
Примеры
Чередование большого изображения
Рассмотрим большое изображение, логотип Firefox размером 2982x2808. Мы хотим выложить четыре копии этого изображения в элемент размером 300x300 пикселей. Для этого мы можем использовать фиксированное значение 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 | |
background-size |
31Браузеры на основе WebKit изначально реализовывали более ранний черновик CSS3background-size, в котором опущенное второе значение рассматривалось как дублирование первого значения; этот черновик не включает ключевые слова contain или cover. |
1212 | 4493.6–4 | 1015Браузеры на основе WebKit изначально реализовывали более ранний черновик CSS3background-size, в котором опущенное второе значение рассматривалось как дублирование первого значения; этот черновик не включает ключевые слова contain или cover.9.5–15Вычисление области позиционирования фона в Opera 9.5 некорректно для фонов с fixed позиционированием. Opera 9.5 также интерпретирует двухзначное значение как горизонтальный масштабный коэффициент и, судя по всему, вертикальную границу обрезки. Это было исправлено в Opera 10. |
53Браузеры на основе WebKit изначально реализовывали более ранний черновик CSS3background-size, в котором опущенное второе значение рассматривалось как дублирование первого значения; этот черновик не включает ключевые слова contain или cover. |
1818Браузеры на основе WebKit изначально реализовывали более ранний черновик CSS3background-size, в котором опущенное второе значение рассматривалось как дублирование первого значения; этот черновик не включает ключевые слова contain или cover. |
449 | 10.114Браузеры на основе WebKit изначально реализовывали более ранний черновик CSS3background-size, в котором опущенное второе значение рассматривалось как дублирование первого значения; этот черновик не включает ключевые слова contain или cover.10.1–14Вычисление области позиционирования фона в Opera 9.5 некорректно для фонов с fixed позиционированием. Opera 9.5 также интерпретирует двухзначное значение как горизонтальный масштабный коэффициент и, судя по всему, вертикальную границу обрезки. Это было исправлено в Opera 10. |
4.21Браузеры на основе WebKit изначально реализовывали более ранний черновик CSS3background-size, в котором опущенное второе значение рассматривалось как дублирование первого значения; этот черновик не включает ключевые слова contain или cover. |
1.01.0Браузеры на основе WebKit изначально реализовывали более ранний черновик CSS3background-size, в котором опущенное второе значение рассматривалось как дублирование первого значения; этот черновик не включает ключевые слова contain или cover. |
2.2≤37Браузеры на основе WebKit изначально реализовывали более ранний черновик CSS3background-size, в котором опущенное второе значение рассматривалось как дублирование первого значения; этот черновик не включает ключевые слова contain или cover. |
auto |
1 | 12 | ≤72 | 15 | 3 | 18 | 79 | 14 | 2 | 1.0 | 4.4 |
contain |
3 | 12 | 3.6 | 10 | 5 | 18 | 4 | 14 | 4.2 | 1.0 | 37 |
cover |
3 | 12 | 3.6 | 10 | 5 | 18 | 4 | 14 | 4.2 | 1.0 | 37 |
См. также
© 2005–2024 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