Зміни розмірів зображень тла за допомогою background-size
Властивість CSS background-size
дає змогу змінювати розмір зображення тла елемента, відкидаючи усталену логіку, котра застеляє елемент зображенням у повному розмірі, як плиткою, шляхом встановлення ширини чи висоти зображення. Таким чином можна масштабувати зображення в бік зменшення чи збільшення – як завгодно.
Плитка з великого зображення
Припустімо, є велике зображення, логотип 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;
}
Результат
Розтягування зображення
Також можна задати як горизонтальний, так і вертикальний розміри зображення, отак:
background-size: 300px 150px;
Результат має наступний вигляд:
Масштабування зображення в бік збільшення
Інші крайнощі: можна масштабувати зображення на тлі в бік збільшення. Тут – піктограма 32x32 пікселів масштабується до 300x300 пікселів:
.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;
}
Як можна спостерігати, CSS насправді по суті ідентичний, окрім імені файлу зображення.
Особливі значення: contain
і cover
На додачу до значень <length>
, властивість CSS background-size
пропонує два особливі значення розміру, contain
і cover
. Погляньмо на них.
contain
Значення contain
задає те, що, незалежно від розміру контейнерного блока, зображення тла повинно масштабуватися так, щоб кожна сторона була настільки великою, наскільки це можливо, але не більшою за довжину відповідної сторони контейнера. Спробуйте змінити розміри прикладу нижче, аби побачити це в дії.
HTML
<div class="bgSizeContain">
<p>Спробуйте змінити розміри цього елемента!</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;
resize: both;
overflow: scroll;
}
Результат
cover
Значення cover
задає те, що зображення тла повинно калібруватися так, щоб воно було настільки малим, наскільки можливо, щоб при цьому обидва розміри були більшими чи рівними розмірам відповідних сторін контейнера. Спробуйте змінити розміри прикладу нижче, аби побачити це в дії.
HTML
<div class="bgSizeCover">
<p>Спробуйте змінити розміри цього елемента!</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;
resize: both;
overflow: scroll;
}