Je veux définir une image d'arrière-plan à différents divs, mais mes problèmes sont les suivants:
Comment puis-je étirer l'image de fond pour remplir tout le fond de la div?
#div2{
background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
height:180px;
width:200px;
border: 1px solid red;
}
Ajouter
background-size:100% 100%;
à votre css sous background-image.
Vous pouvez également spécifier les dimensions exactes, à savoir:
background-size: 30px 40px;
Ici: JSFiddle
Vous pouvez utiliser:
background-size: cover;
Ou utilisez simplement une grande image de fond avec:
background: url('../images/teaser.jpg') no-repeat center #eee;
.selector{
background-size: cover;
/* stretches background WITHOUT deformation so it would fill the background space,
it may crop the image if the image's dimensions are in different ratio,
than the element dimensions. */
}
Etirement maximal sans recadrage ni déformation (ne peut pas remplir le fond) :background-size: contain;
Force étirement absolu (peut causer une déformation, mais pas de rognage) :background-size: 100% 100%;
Image de positionnement absolu en tant que premier enfant du parent (position relative) et étirement à la taille du parent.
HTML
<div class="selector">
<img src="path.extension" alt="alt text">
<!-- some other content -->
</div>
background-size: cover;
:Pour atteindre cet objectif de manière dynamique, vous devez utiliser l'option à l'opposé de l'option alternative de la méthode contenir (voir ci-dessous). Si vous devez centrer l'image recadrée, vous aurez besoin d'un JavaScript pour le faire de manière dynamique - par exemple. en utilisant jQuery:
$('.selector img').each(function(){
$(this).css({
"left": "50%",
"margin-left": "-"+( $(this).width()/2 )+"px",
"top": "50%",
"margin-top": "-"+( $(this).height()/2 )+"px"
});
});
Exemple pratique:
background-size: contain;
:Celui-ci peut être un peu délicat - la dimension de votre arrière-plan qui surchargerait le parent aura CSS définie à 100%, l'autre à auto. Exemple pratique:
.selector img{
position: absolute; top:0; left: 0;
width: 100%;
height: auto;
/* -- OR -- */
/* width: auto;
height: 100%; */
}
background-size: 100% 100%;
:.selector img{
position: absolute; top:0; left: 0;
width: 100%;
height: 100%;
}
PS: Pour faire les équivalents de couverture/contenir de la manière "ancienne" de manière complètement dynamique (pour que vous n'ayez pas à vous soucier des débordements/ratios), vous devrez utiliser javascript pour détecter les ratios. pour vous et définir les dimensions comme décrit ...
Pour cela, vous pouvez utiliser la propriété CSS3 background-size
. Écrivez comme ceci:
#div2{
background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
-moz-background-size:100% 100%;
-webkit-background-size:100% 100%;
background-size:100% 100%;
height:180px;
width:200px;
border: 1px solid red;
}
Vérifiez ceci: http://jsfiddle.net/qdzaw/1/
Vous pouvez ajouter:
#div2{
background-image:url(http://s7.static.hootsuite.com/3-0-48/images/themes/classic/streams/message-gradient.png);
background-size: 100% 100%;
height:180px;
width:200px;
border: 1px solid red;
}
Vous pouvez en lire plus à ce sujet ici: css3 background-size
body{
margin:0;
background:url('image.png') no-repeat 50% 50% fixed;
background-size: cover;
}
en utilisant la propriété css:
background-size: cover;
Utilisation: taille du fond: 100% 100%; Pour créer une image d’arrière-plan adaptée à la taille de div.
Pour conserver les proportions, utilisez background-size: 100% auto;
div {
background-image: url('image.jpg');
background-size: 100% auto;
width: 150px;
height: 300px;
}
Essayez quelque chose comme ça:
div {
background-image: url(../img/picture1.jpg);
height: 30em;
background-repeat: no-repeat;
width: 100%;
background-position: center;
}