Dopasowywanie i rozmiar obrazu w celu dopasowania do div (bootstrap)


100

Próbuję uzyskać obraz pasujący do elementu div o określonym rozmiarze. Niestety obraz nie jest z nim zgodny i zamiast tego proporcjonalnie zmniejsza się do rozmiaru, który nie jest wystarczająco duży. Nie jestem pewien, jaki jest najlepszy sposób, aby dopasować obraz do jego wnętrza.

Jeśli to nie wystarczy, z przyjemnością dostarczę więcej i jestem otwarty na naprawienie innych błędów, które przeoczę.

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

Mój 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;


}

Odpowiedzi:


58

Możesz wyraźnie zdefiniować widthi heightobrazów, ale wyniki mogą nie być najlepiej wyglądające.

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

jsFiddle


... zgodnie z komentarzem możesz też po prostu zablokować dowolny overflow- zobacz ten przykład, aby zobaczyć obraz ograniczony wysokością i obcięty, ponieważ jest zbyt szeroki.

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

.top1 img {
    height:100%;
}

Chciałem to zrobić, niestety, jak powiedziałeś, wyniki nie są najlepsze. Najlepiej byłoby, gdyby obrazy zostały zmniejszone, tak aby wysokość obrazu odpowiadała wysokości elementu div, a szerokość obrazu, która przekracza szerokość elementu div ograniczającego, byłaby ukryta. Jeśli to ma
sens

Tak, tego właśnie szukam! Dziękuję bardzo!
smilefreak24

INNA odpowiedź jest najlepsza, po prostu dodanie class = "img-responsive" do tagu img załatwia sprawę!
iMobaio,

1
lepiej od width:100%;jest max-width:100%;i lepiej wszystkie są w klasie img-responsiveBS3 lub img-fluidBS4.
Nabi KAZ

173

Spróbuj w ten sposób:

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

AKTUALIZACJA:

W Bootstrap 4 img-responsivestaje się img-fluid, więc rozwiązaniem wykorzystującym Bootstrap 4 jest:

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

5
Fajne! class = "img-responsive" pomogło. Być może dzisiaj powinna to być akceptowana odpowiedź.
Anupam

1
class = "img-responsive" to zdecydowanie najlepsza droga! To powinna być akceptowana odpowiedź.
iMobaio,

29
to jest img-fluidteraz, nieimg-responsive
porządku


32

Po prostu dodaj klasę img-responsivedo swojego imgtagu, będzie ona stosowana w bootstrap 3 i nowszych!


Przepraszamy, ale czy możesz być konkretny, nie otrzymuję poprawnie Twojego pytania, dziękuję!
Shashi,

7

Miałem ten sam problem i natknąłem się na następujące proste rozwiązanie. Po prostu dodaj trochę dopełnienia do obrazu, a jego rozmiar zostanie dopasowany do elementu div.

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

1
Rozwiązany za pomocą Bootstrap zamiast niestandardowego CSS. Dziękuję Ci.
mattgreen

7

Użyłem tego i działa dla mnie.

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

4

Jeśli ktoś z was szuka Bootstrap-4 . Tutaj jest

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

nie jest to idealne rozwiązanie, jeśli masz kolejną kolumnę z tekstem, ponieważ również będzie ciężko o krawędź granicy
James Burke

2

Przez większość czasu projekt bootstrap używa jQuery, więc możesz użyć jQuery.

Po prostu uzyskaj szerokość i wysokość rodzica za pomocą JQuery.offsetHeight()i JQuery.offsetWidth()i ustaw je na element podrzędny za pomocą JQuery.width()iJQuery.height() .

Jeśli chcesz, aby był responsywny, powtórz powyższe kroki $(window).resize(func)również w.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.