Responsive image align center bootstrap 3


423

Robię katalog przy użyciu Bootstrap 3. Obrazy wyświetlane na tabletach wyglądają brzydko ze względu na ich mały rozmiar (500 x 500) i szerokość 767 pikseli w przeglądarce. Chcę umieścić obraz na środku ekranu, ale z jakiegoś powodu nie mogę. Kto pomoże rozwiązać problem?

Zrzut ekranu części strony produktu, na której produkt nie jest wyśrodkowany pod nagłówkiem


5
Podoba mi się projekt Twojej witryny i produktów - dobra robota:)
— Bojangles

7
Kolejny przykład „Dlaczego potrzebujemy umieścić kod w treści pytania”.
— LEQADA,

Odpowiedzi:


572

Jeśli używasz Bootstrap w wersji 3.0.1 lub nowszej, powinieneś użyć tego rozwiązania . Nie zastępuje stylów Bootstrap niestandardowym CSS, ale zamiast tego używa funkcji Bootstrap.

Moja oryginalna odpowiedź jest pokazana poniżej dla potomności


Jest to przyjemnie łatwa naprawa. Ponieważ .img-responsivez Bootstrap już ustawiono display: block, możesz użyć margin: 0 autodo wyśrodkowania obrazu:

.product .img-responsive {
    margin: 0 auto;
}

35
Prawdopodobnie lepiej jest utworzyć nową klasę margin: 0 auto, zamiast zmieniać responsywną .img.
— knite

4
To jest myśl, chociaż osobiście nie mogę wymyślić gdziekolwiek, chciałbym responsywnego obrazu, który nie byłby wyśrodkowany, szczególnie w tym projekcie. Wszystko zależy od przypadku użycia i tego, co wydarzy się w przyszłości
— Bojangles,

Proszę zobaczyć tę odpowiedź, jeśli używasz Bootstrap v4 lub nowszego: stackoverflow.com/a/43293957/4102515
— snorberhuis

1156

W .center-blockTwitter Bootstrap 3 jest klasa ( od wersji 3.0.1 ), więc użyj:

<img src="..." alt="..." class="img-responsive center-block" />

27
To powinna być zaakceptowana odpowiedź, ponieważ nie trzeba dodawać żadnych CSS, aby z nich skorzystać.
— user2602152

16
class="img-responsive" style="margin: 0 auto;"działa dla mnie class="img-responsive center-block"nie (bootstrap 3, ale wersja kilka miesięcy)
— mxro

9
Wyrównaj centrum nie działa, gdy używana jest funkcja reagowania na img.
— Ismael

1
@DHlavaty, czy możesz wyjaśnić różnicę między używaniem .img-responsive AND .center-block a zwykłym używaniem .img-responsive z automatycznym marginesem, jak sugeruje zaakceptowana odpowiedź? czy jedna metoda jest bardziej niezawodna?
— user137717,

1
Możesz nie chcieć tego używać, jeśli obraz ma być klikalny. Oznacza to, że jeśli jest zawinięty w <a href="#"> </a>parę, klikalny obszar zostanie rozszerzony do pełnej szerokości otaczającego pojemnika, który może być nieco większy niż obraz. Może to dezorientować użytkowników, którzy klikną na „puste” miejsce, które ich zdaniem.
— CXJ

108

Dodaj tylko klasę center-blockdo obrazu, działa to również z Bootstrap 4:

<img src="..." alt="..." class="center-block" />

Uwaga: center-blockdziała nawet wtedy, gdy img-responsivejest używany


6
Najlepsza odpowiedź, ale niedoceniana. Dlatego używasz frameworka!
— Baumannzone

Więc. Fantastyczny. Dziękuję
— AndrewLeonardi,

Jego praca .. Dzięki
— Dhiren Patel

31

Po prostu użyj .text-centerklasy, jeśli używasz Bootstrap 3.

<div class="text-center">
    <img src="..." alt="..."/>
</div>

Uwaga: To nie działa w przypadku reagowania na img


1
Pytanie dotyczyimg-responsive
— Aleksieja Kosowa

W przypadku reagujących na img dodaj centrum img (testowane w 3.3.6) dla tych, którzy mogą to zobaczyć w wyszukiwarkach Google
— DardanM

10

To powinno wyśrodkować obraz i sprawić, by był responsywny.

<img src="..." class="img-responsive" style="margin:0 auto;"/>

6

Sugerowałbym bardziej „abstrakcyjną” klasyfikację. Dodaj nową klasę „img-center”, której można używać w połączeniu z klasą reagującą na .img:

// Center responsive images
.img-responsive.img-center {
  margin: 0 auto;
}

3
@media (max-width: 767px) {
   img {
     display: table;
     margin: 0 auto;
   }
}

2
Dlaczego display: table? To już display: blockwystarczy, aby zabrać się margin: 0 autodo pracy
— Bojangles

3

W img-responsivetej klasie stylów możesz nadal pracować bez wpływu na inne obrazy.

Możesz poprzedzić ten tag sekcją id / div id / class, aby zdefiniować kolejność, w której imgjest on zagnieżdżony. Ten zwyczaj img-responsivebędzie działał tylko w tym obszarze.

Załóżmy, że masz obszar HTML zdefiniowany jako:

<section id="work"> 
    <div class="container">
        <div class="row">
            <img class="img-responsive" src="some_image.jpg">
        </div>
    </div>
</section>

Następnie twój CSS może być:

section#work .img-responsive{
    margin: 0 auto;
}

Uwaga: Ta odpowiedź dotyczy potencjalnego wpływu zmian img-responsivejako całości. Oczywiście center-blockjest najprostszym rozwiązaniem.


Ta odpowiedź jest niedoceniana, zawijanie obrazu do klasy wiersza ma kluczowe znaczenie w wyśrodkowaniu obrazu, gdy pod obrazem znajduje się tekst.
— Glenn Plas,

3

Wypróbuj ten kod, będzie działał również w przypadku małych ikon z bootstrap 4, ponieważ nie ma klasy bloku centralnego to bootstrap 4, więc wypróbuj tę metodę, która będzie pomocna. Można zmienić położenie obrazu poprzez ustawienie .col-md-12się .col-md-8lub .col-md-4, to zapisu do Ciebie.

<div class="container">
       <div class="row">
          <div class="col-md-12">
            <div class="text-xs-center text-lg-center">
           <img src="" class="img-thumbnail">
           </div>
          </div>
       </div>
  </div>

3

Spróbuj tego:

.img-responsive{
    display: block;
    height: auto;
    max-width: 100%;
	  margin:0 auto;
}
.Image{
  background:#ccc;
  padding:30px;
}
<div class="Image">
  <img src="http://minisoft.com.bd/uploads/ourteam/rafiq.jpg" class="img-responsive" title="Rafique" alt="Rafique">
</div>


3

Po prostu umieść wszystkie miniatury obrazów w wierszach / kolumnach w następujący sposób:

<div class="row text-center">
 <div class="col-12">
  # your images here...
 </div>
</div>

i wszystko będzie dobrze działać!


2

Aby dodać do odpowiedzi już podanych, posiadające img-responsivew połączeniu z img-thumbnailustawi display: blocksię display: inline block.


2
<div class="col-md-12 text-center">
    <img class="img-responsive tocenter" />
</div>

.

<style>
   .tocenter {
    margin:0 auto;
    display: inline;
    }
</style>

0

Możesz to naprawić definiując margines: 0 auto

lub możesz użyć również col-md-offset

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<style>
.img-responsive{
margin:0 auto;
}
</style>
<body>

<div class="container">
  <h2>Image</h2>
<div class="row">
<div class="col-md-12">
  <p>The .img-responsive class makes the image scale nicely to the parent element (resize the browser window to see the effect):</p>                  
  <img src="http://www.w3schools.com/bootstrap/cinqueterre.jpg" class="img-responsive" alt="Cinque Terre" width="304" height="236"> 
</div>
</div>
</div>

</body>
</html>


0

Bardziej dokładnym sposobem zastosowanym do wszystkich obiektów Booostrap przy użyciu tylko klas standardowych byłoby nie ustawianie marginesów górnego i dolnego (ponieważ obraz może dziedziczyć je od rodzica), więc zawsze używam:

.text-center .img-responsive {
    margin-left: auto;
    margin-right: auto;
}

Zrobiłem też Gist dla tego, więc jeśli jakieś zmiany będą miały zastosowanie z powodu jakichkolwiek błędów, wersja aktualizacji będzie zawsze tutaj: https://gist.github.com/jdrda/09a38bf152dd6a8aff4151c58679cc66


0

Jak dotąd wydaje się, że najlepszym rozwiązaniem jest akceptacja <img class="center-block" ... />. Ale nikt nie wspominał, jak to center-blockdziała.

Weźmy na przykład Bootstrap v3.3.6:

.center-block {
  display: block;
  margin-right: auto;
  margin-left: auto;
}

Wartość domyślna dispalydla <img>to inline. Wartość blockwyświetli element jako element blokowy (jak <p>). Zaczyna się od nowej linii i zajmuje całą szerokość. W ten sposób dwa ustawienia marginesów pozwalają obrazowi pozostać w środku poziomo.

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.