Для цього є властивість CSS3, а саме background-size
( перевірка сумісності ). Хоча можна встановити значення довжини, зазвичай це використовується із спеціальними значеннями contain
та cover
. У вашому конкретному випадку ви повинні використовувати cover
:
body {
background-image: url(images/background.svg);
background-size: cover; /* <------ */
background-repeat: no-repeat;
background-position: center center; /* optional, center the image */
}
Пласт яєць для contain
іcover
Вибачте за погану каламбур, але я буду використовувати картину дня Бісварупа Гангулі для демонстрації. Скажімо, що це ваш екран, а сіра область знаходиться поза вашим видимим екраном. Для демонстрації я прийму співвідношення 16х9.
Ми хочемо використати вищезгадану картину дня як фон. Однак ми чомусь обрізали зображення на 4x3. Ми можемо встановити background-size
властивість на деяку фіксовану довжину, але ми зосередимось на contain
та cover
. Зауважте, що я також припускаю, що ми не маніпулювали шириною та / або висотою body
.
contain
contain
Масштабуйте зображення, зберігаючи його внутрішнє співвідношення сторін (якщо воно є), до найбільшого розміру, таким чином, щоб ширина та його висота могли вміщуватися всередині фону позиціонування фону.
Це гарантує, що фонове зображення завжди повністю міститься у зоні позиціонування фону, однак background-color
у цьому випадку може бути заповнено порожній простір :
cover
cover
Масштабуйте зображення, зберігаючи його внутрішнє співвідношення сторін (якщо таке є), до найменшого розміру, щоб і його ширина, і його висота могли повністю покрити область позиціонування фону.
Це гарантує, що фонове зображення охоплює все. Він не буде видимим background-color
, проте залежно від співвідношення екрана значна частина вашого зображення може бути відрізана:
Демонстрація фактичного коду
div > div {
background-image: url(http://i.stack.imgur.com/r5CAq.jpg);
background-repeat: no-repeat;
background-position: center center;
background-color: #ccc;
border: 1px solid;
width: 20em;
height: 10em;
}
div.contain {
background-size: contain;
}
div.cover {
background-size: cover;
}
/********************************************
Additional styles for the explanation boxes
*********************************************/
div > div {
margin: 0 1ex 1ex 0;
float: left;
}
div + div {
clear: both;
border-top: 1px dashed silver;
padding-top:1ex;
}
div > div::after {
background-color: #000;
color: #fefefe;
margin: 1ex;
padding: 1ex;
opacity: 0.8;
display: block;
width: 10ex;
font-size: 0.7em;
content: attr(class);
}
<div>
<div class="contain"></div>
<p>Note the grey background. The image does not cover the whole region, but it's fully <em>contained</em>.
</p>
</div>
<div>
<div class="cover"></div>
<p>Note the ducks/geese at the bottom of the image. Most of the water is cut, as well as a part of the sky. You don't see the complete image anymore, but neither do you see any background color; the image <em>covers</em> all of the <code><div></code>.</p>
</div>
html, body { height: 100%; }
допомагає? Також кашель .