Ajustement et taille de l'image pour s'adapter à un div (bootstrap)


97

J'essaie de faire en sorte qu'une image tienne dans un div de taille spécifique. Malheureusement, l'image ne s'y conforme pas et se réduit proportionnellement à une taille qui n'est pas assez grande. Je ne sais pas quelle est la meilleure façon de faire en sorte que l'image s'intègre à l'intérieur.

Si ce code ne suffit pas, je serais heureux d'en fournir plus et je suis prêt à corriger toute autre erreur que je néglige.

Voici le HTML

<div class="span3 top1">  
        <div class="row">
          <div class="span3 food1">
              <img src="images/food1.jpg" alt="">
          </div>
        </div>
            <div class="row">
              <div class="span3 name1">
                  heres the name
            </div>
            </div>
          <div class="row">
              <div class="span3 description1">
                  heres where i describe and say "read more"
            </div>
            </div>


      </div>

Mon CSS

.top1{

    height:390px;
    background-color:#FFFFFF;
    margin-top:10px;


}

.food1{

background-color:#000000;
height:230px;


}

.name1{

background-color:#555555;
height:90px;

}

.description1{

background-color:#777777;
height:70px;


}

J'ai publié une réponse à une question similaire ici: stackoverflow.com/questions/41870216/…
— FredyWenger

Réponses:


57

Vous pouvez définir explicitement le widthet heightdes images, mais les résultats peuvent ne pas être les meilleurs.

.food1 img {
    width:100%;
    height: 230px;
}

jsFiddle


... par votre commentaire, vous pouvez également bloquer n'importe quel overflow- voir cet exemple pour voir une image restreinte par la hauteur et coupée parce qu'elle est trop large.

.top1 {
    height:390px;
    background-color:#FFFFFF;
    margin-top:10px;
    overflow: hidden;
}

.top1 img {
    height:100%;
}

J'ai envisagé de faire cela, malheureusement, comme vous l'avez dit, les résultats ne sont pas les meilleurs. Idéalement, j'aimerais que les images soient réduites afin que la hauteur de l'image corresponde à la hauteur du div et que la largeur de l'image qui dépasse la largeur du div contraignant soit masquée. Si cela fait sens
— smilefreak24

Oui c'est ce que je recherche! Merci beaucoup!
— smilefreak24

La réponse AUTRE est la meilleure, ajouter simplement class = "img-responsive" à la balise img fait l'affaire!
— iMobaio

1
mieux width:100%;est max-width:100%;et mieux tout est classe img-responsiveen BS3 ou img-fluiden BS4.
— Nabi KAZ

167

Essayez de cette façon:

<div class="container">
    <div class="col-md-4" style="padding-left: 0px;  padding-right: 0px;">
        <img src="images/food1.jpg" class="img-responsive">
    </div>
</div>

METTRE À JOUR:

Dans Bootstrap 4 img-responsivedevient img-fluid, donc la solution utilisant Bootstrap 4 est:

<div class="container">
    <div class="col-md-4 px-0">
        <img src="images/food1.jpg" class="img-fluid">
    </div>
</div>

5
Cool! class = "img-responsive" a aidé. Cela devrait peut-être être la réponse acceptée aujourd'hui.
— Anupam

1
class = "img-responsive" est définitivement la voie à suivre! Cela devrait être la réponse acceptée.
— iMobaio

28
c'est img-fluidmaintenant, pasimg-responsive
— mots pour


32

Ajoutez simplement la classe img-responsiveà votre imgbalise, elle est applicable à partir de bootstrap 3!


Désolé mais pouvez-vous être précis, je ne reçois pas votre question correctement, merci!
— Shashi

7

J'ai eu ce même problème et je suis tombé sur la solution simple suivante. Ajoutez simplement un peu de remplissage à l'image et elle se redimensionne pour s'adapter au div.

<div class="col-sm-3">
  <img src="xxx.png" class="img-responsive" style="padding-top: 5px">
</div>

1
Résolu AVEC Bootstrap plutôt que CSS personnalisé. Je vous remercie.
— mattgreen

7

Je l'ai utilisé et fonctionne pour moi.

<div class="col-sm-3">
  <img src="xxx.png" style="width: auto; height: 195px;">
</div>

4

Si l'un d'entre vous cherche Bootstrap-4 . C'est ici

<div class="row no-gutters">
    <div class="col-10">
        <img class="img-fluid" src="/resources/img1.jpg" alt="">
    </div>
</div>

ce n'est pas la solution idéale si vous avez une autre colonne avec du texte car elle sera également dure contre le bord de la bordure
— James Burke

2

La plupart du temps, le projet bootstrap utilise jQuery, vous pouvez donc utiliser jQuery.

Obtenez simplement la largeur et la hauteur du parent avec JQuery.offsetHeight()et JQuery.offsetWidth(), et définissez-les sur l'élément enfant avec JQuery.width()et JQuery.height().

Si vous souhaitez le rendre réactif, répétez également les étapes ci-dessus dans le $(window).resize(func).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.