web-dev-qa-db-fra.com

Comment étirer l'image de fond pour remplir une div

Je veux définir une image d'arrière-plan à différents divs, mais mes problèmes sont les suivants:

  1. La taille de l'image est fixée (60px).
  2. Taille variable de la div

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;
}

Vérifiez le code ici.

94
Muhammad Usman

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

134
hendos43

Vous pouvez utiliser:

background-size: cover;

Ou utilisez simplement une grande image de fond avec:

background: url('../images/teaser.jpg') no-repeat center #eee;
69
Ouadie

CSS3 moderne (recommandé pour l'avenir et probablement la meilleure solution)

.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%;

"Vieux" CSS "travaille toujours" manière

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>

Équivalent de CSS3 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:
css crop like example

Équivalent de CSS3 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: css stretching background as image

.selector img{
   position: absolute; top:0; left: 0;
   width: 100%;
   height: auto;
   /* -- OR -- */
   /* width: auto; 
      height: 100%; */
}

Équivalent de CSS3 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 ...

41
jave.web

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/

24
sandeep

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

20
Xella
body{
  margin:0;
  background:url('image.png') no-repeat 50% 50% fixed;
  background-size: cover;
}
2
Kursat Turkay

en utilisant la propriété css:

background-size: cover;
1
MrBii

Utilisation: taille du fond: 100% 100%; Pour créer une image d’arrière-plan adaptée à la taille de div.

1
jagan reddy

Pour conserver les proportions, utilisez background-size: 100% auto;

div {
    background-image: url('image.jpg');
    background-size: 100% auto;
    width: 150px;
    height: 300px;
}
0
Atul Yadav

Essayez quelque chose comme ça:

div {
    background-image: url(../img/picture1.jpg);
    height: 30em;
    background-repeat: no-repeat;
    width: 100%;
    background-position: center;
}
0
Deejay