Jest do tego właściwość CSS3, a mianowicie background-size
( kontrola zgodności ). Chociaż można ustawić wartości długości, zwykle używa się go ze specjalnymi wartościami contain
i cover
. W twoim konkretnym przypadku powinieneś użyć cover
:
body {
background-image: url(images/background.svg);
background-size: cover; /* <------ */
background-repeat: no-repeat;
background-position: center center; /* optional, center the image */
}
Eggsplanation dla contain
icover
Przepraszam za kiepską kalamburę, ale wykorzystam zdjęcie dnia autorstwa Biswarup Ganguly do demonstracji. Powiedzmy, że to jest twój ekran, a szary obszar znajduje się poza twoim widocznym ekranem. Dla celów demonstracyjnych zamierzam przyjąć proporcje 16 x 9.
Chcemy wykorzystać wspomniane zdjęcie dnia jako tło. Jednak z jakiegoś powodu przycięliśmy obraz do 4x3. Możemy ustawić background-size
właściwość na pewną stałą długość, ale skupimy się na contain
i cover
. Zauważ, że zakładam również, że nie zmieniliśmy szerokości i / lub wysokości body
.
contain
contain
Skaluj obraz, zachowując jego wewnętrzny współczynnik kształtu (jeśli istnieje), do największego rozmiaru, tak aby zarówno jego szerokość, jak i wysokość mieściły się w obszarze pozycjonowania tła.
Dzięki temu obraz tła jest zawsze całkowicie zawarty w obszarze pozycjonowania tła, jednak background-color
w tym przypadku może być wypełniona pusta przestrzeń :
cover
cover
Skaluj obraz, zachowując jego wewnętrzny współczynnik kształtu (jeśli istnieje), do najmniejszego rozmiaru, tak aby zarówno jego szerokość, jak i wysokość mogły całkowicie pokryć obszar pozycjonowania tła.
Dzięki temu obraz tła pokrywa wszystko. Nie będzie widoczny background-color
, jednak w zależności od proporcji ekranu duża część obrazu może zostać odcięta:
Demonstracja z rzeczywistym kodem
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%; }
pomaga Również kaszel .