Regolazione e dimensione dell'immagine per adattarsi a un div (bootstrap)


97

Sto cercando di ottenere un'immagine che si adatti a una dimensione div specifica. Sfortunatamente, l'immagine non è conforme ad essa e si riduce invece proporzionalmente a una dimensione che non è abbastanza grande. Non sono sicuro di quale sia il modo migliore per ottenere che l'immagine si adatti al suo interno.

Se questo codice non è sufficiente, sarei felice di fornirne di più e sono aperto a correggere eventuali altri errori che sto trascurando.

Ecco l'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>

Il mio 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;


}

Ho inviato una risposta ad una domanda simile qui: stackoverflow.com/questions/41870216/...
FredyWenger

Risposte:


57

Puoi definire esplicitamente il widthe heightdelle immagini, ma i risultati potrebbero non essere i migliori.

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

jsFiddle


... secondo il tuo commento, potresti anche bloccare qualsiasi overflow- guarda questo esempio per vedere un'immagine limitata dall'altezza e tagliata perché è troppo ampia.

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

.top1 img {
    height:100%;
}

Ho cercato di farlo, purtroppo come hai detto, i risultati non sono dei migliori. Idealmente, vorrei che le immagini fossero ridotte in modo che l'altezza dell'immagine si adatti all'altezza del div e la larghezza dell'immagine che supera la larghezza del div vincolante sarebbe nascosta. Se questo ha senso
smilefreak24

Sì, è quello che sto cercando! Grazie mille!
smilefreak24

L'ALTRA risposta è la migliore, semplicemente aggiungendo class = "img-responsive" al tag img fa il trucco!
iMobaio

1
meglio da width:100%;è max-width:100%;e meglio tutti sono di classe img-responsivein BS3 o img-fluidin BS4.
Nabi KAZ

167

Prova in questo modo:

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

AGGIORNARE:

In Bootstrap 4 img-responsivediventa img-fluid, quindi la soluzione che utilizza Bootstrap 4 è:

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

5
Freddo! class = "img-responsive" ha aiutato. Forse questa dovrebbe essere la risposta accettata oggi.
Anupam

1
class = "img-responsive" è decisamente la strada da percorrere! Questa dovrebbe essere la risposta accettata.
iMobaio

28
è img-fluidora, nonimg-responsive
parole per il


32

Aggiungi semplicemente la classe img-responsiveal tuo imgtag, è applicabile dal bootstrap 3 in poi!


Mi dispiace ma puoi essere specifico, non ricevo correttamente la tua domanda, grazie!
Shashi

7

Ho avuto lo stesso problema e sono incappato nella seguente semplice soluzione. Basta aggiungere un po 'di riempimento all'immagine e si ridimensiona per adattarsi al div.

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

1
Risolto CON Bootstrap piuttosto che CSS personalizzato. Grazie.
mattgreen

7

L'ho usato e funziona per me.

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

4

Se qualcuno di voi sta cercando Bootstrap-4 . Ecco qui

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

questa non è la soluzione ideale se hai un'altra colonna con del testo in quanto sarà anche difficile contro il bordo del confine
James Burke

2

Il più delle volte, il progetto bootstrap usa jQuery, quindi puoi usare jQuery.

Basta ottenere la larghezza e l'altezza del genitore con JQuery.offsetHeight()e JQuery.offsetWidth()e impostarle sull'elemento figlio con JQuery.width()e JQuery.height().

Se vuoi renderlo reattivo, ripeti i passaggi precedenti anche nel file $(window).resize(func).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.