Il existe une propriété CSS3 pour cela, à savoir background-size
( vérification de compatibilité ). Bien que l'on puisse définir des valeurs de longueur, il est généralement utilisé avec les valeurs spéciales contain
et cover
. Dans votre cas spécifique, vous devez utiliser cover
:
body {
background-image: url(images/background.svg);
background-size: cover; /* <------ */
background-repeat: no-repeat;
background-position: center center; /* optional, center the image */
}
Eggsplanation pour contain
etcover
Désolé pour le mauvais jeu de mots, mais je vais utiliser l' image du jour par Biswarup Ganguly pour la démonstration. Disons que c'est votre écran et que la zone grise est en dehors de votre écran visible. Pour démonstration, je vais supposer un ratio 16x9.
Nous voulons utiliser l'image de la journée susmentionnée comme arrière-plan. Cependant, nous avons recadré l'image en 4x3 pour une raison quelconque. Nous pourrions définir la background-size
propriété sur une longueur fixe, mais nous nous concentrerons sur contain
et cover
. Notez que je suppose également que nous n'avons pas modifié la largeur et / ou la hauteur de body
.
contain
contain
Redimensionnez l'image, tout en préservant son rapport d'aspect intrinsèque (le cas échéant), à la plus grande taille de sorte que sa largeur et sa hauteur puissent s'adapter à l'intérieur de la zone de positionnement d'arrière-plan.
Cela garantit que l'image d'arrière-plan est toujours complètement contenue dans la zone de positionnement d'arrière-plan, cependant, il pourrait y avoir un espace vide rempli avec votre background-color
dans ce cas:
cover
cover
Redimensionnez l'image, tout en préservant son rapport d'aspect intrinsèque (le cas échéant), à la plus petite taille de sorte que sa largeur et sa hauteur puissent couvrir complètement la zone de positionnement d'arrière-plan.
Cela garantit que l'image d'arrière-plan couvre tout. Il n'y aura pas de visibilité background-color
, mais selon le rapport de l'écran, une grande partie de votre image pourrait être coupée:
Démonstration avec le code réel
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%; }
aide? Aussi, tousse .