Задача масштабирования фонового изображения согласно заданным размерам довольно часто встречается на практике. Например, растянуть фоновую картинку на все окно браузера.
Собрав в кучу CSS2, CSS3, фильтры для IE и специфические вендорные префиксы для разных браузеров, получаем почти кроссбраузерное решение поставленной задачи.
html, body {
height:100%;
width:100%;
margin:0;
padding:0;
}
body {
background-attachment: fixed;
background-image: url('images/body_bg.jpg');
background-repeat: no-repeat;
background-position: center center;
-o-background-size: 100% 100%; /* opera ≥ 9.5 */
-webkit-background-size: 100% 100%; /* Safari ≥ 5.0, Chrome ≥ 4.0 */
-khtml-background-size: 100% 100%; /* Konqueror ≥ 3.5.4 */
-moz-background-size: 100% 100%; /* Firefox ≥ 3.6 */
background-size: 100% 100%; /* браузеры с поддержкой CSS3: FF ≥ 4, Opera ≥ 10.53, IE ≥ 9.0 */
}
/* Через условные комментарии или хаки пишем стили для IE */
* html body {
/* IE8 */
-ms-filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/google-chrome.jpg',sizingMethod='scale')";
/* IE < 8 */
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader( src='images/body_bg.jpg', sizingMethod='scale');
background-image: none; /* IE ≤ 9.0 */
}
Поддержка браузерами
| Поддержка | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) | Konqueror |
|---|---|---|---|---|---|---|
| Базовая | 1.0 — webkit | 3.6 (1.9.2) — moz | 9.0 | 9.5 — o | 3.0 (522) — webkit | 3.5.4 |
| 3.0 | 4.0 (2.0) | 10.0 | 4.1 (532) | |||
| Для contain и cover |
3.0 | 3.6 (1.9.2) | 9.0 | 10.0 | 4.1 (532) | — |
| Для SVG backgrounds | — | 8.0 (8.0) | — | — | — | — |
Не применяйте фильтры для тега <html> — это приведет ко множеству проблем.
RTFM
- background-size
- -o-background-size
- -webkit-background-size
- -moz-background-size
- Specify the size of background images
Ссылки
Источник: https://www.kobzarev.com/makeup/boilerplate-background-size/