Jak wyrównać martwy punkt obrazu za pomocą paska startowego

207

Używam frameworka bootstrap i bez powodzenia próbuję wyśrodkować obraz w poziomie.

Próbowałem różnych technik, takich jak podział systemu 12 siatek na 3 równe bloki, np

<div class="container">
    <div class="row">
      <div class="span4"></div>
      <div class="span4"><img src="logo.png" /></div>
      <div class="span4"></div>
    </div>
</div>

Jaka jest najłatwiejsza metoda wyśrodkowania obrazu względem strony?

Utrwalacz
źródło
I btw. możesz rzucić okiem na sekcję „Offseting columns”. twitter.github.com/bootstrap/scaffolding.html#gridSystem
mind85
Ktoś oznaczył to jako brak odpowiedzi i zgadzam się. Dodaj to jako komentarz, a Twoja odpowiedź zostanie wkrótce usunięta.
tckmn
1
Jeśli masz tag img-responsivena klasie img, obraz może nie być wyśrodkowany. Zobacz tę SO odpowiedź na wyjaśnienie, dlaczego użyciecenter-blockklasybootstraprozwiąże ten problem w sposób bootstrap.
cssyphus
Jeśli używasz bootstrap, możesz to zrobić: stackoverflow.com/a/59469712/4654957
Diego Venâncio

Odpowiedzi:

271

Twitter Bootstrap v3.0.3 ma klasę: środkowy blok

Wyśrodkuj bloki treści

Ustaw element do wyświetlenia: blok i środek przez margines. Dostępne jako mixin i klasa.

Wystarczy dodać klasę .center-blockdo imgtagu, wygląda to tak

<div class="container">
  <div class="row">
    <div class="span4"></div>
    <div class="span4"><img class="center-block" src="logo.png" /></div>
    <div class="span4"></div>
  </div>
</div>

W Bootstrap ma już wywołanie w stylu css .center-block

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

Można zobaczyć próbkę z tutaj

użytkownik3098434
źródło
1
brakuje </div>tagu zamykającego na containerdiv. to nie działa dla mnie w wersji 3.3.7
tarabyte
141

Właściwy sposób to zrobić

<div class="row text-center">
  <img ...>
</div>
fabiangebert
źródło
25
nie działało to dla mnie podczas używania go na tym - startbootstrap.com/round-about .. ale dodawanie klasy center-blockdo <img>elementów działało ..
Sumeet Pareek
3
centrum tekstowe nie będzie działać na obrazach z klasą reagującą na img, ale powyższy komentarz (o środkowym bloku) rozwiązuje ten problem
trojan
Uwaga: W Bootstrap v3.1.0 możliwe jest wyśrodkowanie odpowiadające na img w kolumnie przez dodanie centrum tekstu do kolumny. To zachowanie jest zepsute w wersji 3.3.4. Bardzo irytujące. Css jest do bani.
f470071
zamiast tego powinieneś użyć środkowego bloku, jak powiedziano w dokumentacji: getbootstrap.com/css/#images-responsive
Nacho
95

Aktualizacja 2018

center-blockKlasa już nie istnieje w Bootstrap 4 . Aby wyśrodkować obraz w Bootstrap 4, użyj mx-auto d-block...

<img src="..." class="mx-auto d-block"/>
Zim
źródło
6
Wystarczy dodać małe wyjaśnienie do „Aktualizacji 2018”: mx-auto ustawia lewy i prawy margines na auto; Wyświetlanie zestawów d-block: blok
Michael Moriarty
85

Dodaj „środkowy blok” do obrazu jako klasę - nie potrzebujesz dodatkowego css

<img src="images/default.jpg" class="center-block img-responsive"/>
sieć reklamowa
źródło
8
Nie jestem pewien, dlaczego -1 - TO DALEKO NAJLEPSZA ODPOWIEDŹ! Wykorzystuje wbudowaną klasę pomocniczą do Bootstrap.
user2562923,
4
W bootstrap 4 użyj mx-autozamiastcenter-block
Quantum7 13.03.18
52

Bootstrap na Twitterze ma klasę, która koncentruje się na: .pagination-centered

Udało mi się zrobić:

<div class="row-fluid">
   <div class="span12 pagination-centered"><img src="header.png" alt="header" /></div>
</div>

CSS dla klasy to:

.pagination-centered {
  text-align: center;
}
David Silva Smith
źródło
18
A może .text-centerklasa?
trejder
36

Możesz użyć następujących. Obsługuje Bootstrap 3.x powyżej.

<img src="..." alt="..." class="img-responsive center-block" />
Dulith De Costa
źródło
Dzięki za to. Właśnie tego potrzebowałem dzisiaj.
Ryan Wilson
28

Zakładając, że obok obrazu nie ma nic innego, najlepszym sposobem jest użycie text-align: centerelementu imgnadrzędnego:

.row .span4 {
    text-align: center;
}

Edytować

Jak wspomniano w innych odpowiedziach, możesz dodać klasę CSS bootstrap .text-centerdo elementu nadrzędnego. Robi to dokładnie to samo i jest dostępny zarówno w wersji 2.3.3, jak i v3

Boli mnie głowa
źródło
Idealne - spełnia swoje zadanie. Ale powiedz, że mam element <ul> pod obrazem ... To nie wyrównuje środka zgodnie z oczekiwaniami, czy mogę coś dodać? Dzięki
Fixer
1
Od .row w jednej z podstawowych klas w bootowalnym pasku Twittera. Poleciłbym zdefiniować nową klasę jak na tej stronie twitter.github.com/bootstrap/index.html za pomocą nagłówka klasy.
baptme
1
@ Fixer <ul>Powinien nadal wyrównywać środek: jsfiddle.net/N74N7/1 Musi to mieć wpływ na inny kod CSS
My Head Hurts
spędziłem ponad 2 lub 3 godziny i tylko ta linia ... dzięki!
Alamin
18

Pracuje dla mnie. spróbuj użyćcenter-block

<div class="container row text-center">
    <div class="row">
      <div class="span4"></div>
      <div class="span4"><img class="center-block" src="logo.png" /></div>
      <div class="span4"></div>
    </div>
</div>
Leroy Gumede
źródło
6

Potrzebuję tego samego i tutaj znalazłem rozwiązanie:

https://stackoverflow.com/a/15084576/1140407

<div class="container">
  <div class="row">
    <div class="span9 centred">
      This div will be centred.
    </div>
  </div>
</div>

i do CSS:

[class*="span"].centred {
  margin-left: auto;
  margin-right: auto;
  float: none;
}
Shiv
źródło
Myślę, że ludzie bootstrap muszą dodać go do swojego css
Muhammad Ahsan
Cześć i dzięki! Używam teraz Bootstrap v3. Dodałem to do mojego div kontenera img, więc musiałem określić dokładną szerokość (przynajmniej) mojej div, aby wszystko działało. Jeśli nie masz kontenera lub obrazów o różnych rozmiarach, dodaj tę klasę do swojego obrazu.
Inan
1

Możesz użyć właściwości margin z klasą img bootstrap.

.name-of-class .img-responsive { margin: 0 auto; }
Venkatesh Rajavetrivel
źródło
1

Wydaje się, że moglibyśmy użyć nowej funkcji HTML5, jeśli wersja przeglądarki nie stanowi problemu:

w plikach HTML:

<div class="centerBloc">
  I will be in the center
</div>

A w pliku CSS piszemy:

body .centerBloc {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

Dzięki temu div może być idealnie wyśrodkowany w przeglądarce.

Laurent
źródło
3
Klasa div nazywa się .centerBloc, a plik css pokazuje body.loadingDiv ...
Martin
Naprawiono teraz @Martin
dtechplus
0

Powinieneś użyć

<div class="row fluid-img">
  <img class="col-lg-12 col-xs-12" src="src.png">
</div>

.fluid-img {
    margin: 60px auto;
}

@media( min-width: 768px ){
        .fluid-img {
            max-width: 768px;
        }
}
@media screen and (min-width: 768px) {
        .fluid-img {
            padding-left: 0;
            padding-right: 0;
        }
}
ed3d
źródło
0

Używam justify-content-centerklasy do wiersza w kontenerze. Działa dobrze z Bootstrap 4.

<div class="container-fluid">
  <div class="row justify-content-center">
   <img src="logo.png" />
  </div>
</div>
basment
źródło
0

Stworzyłem to i dodałem do Site.css.

.img-responsive-center {
    display: block;
    height: auto;
    max-width: 100%;
    margin-left:auto;
    margin-right:auto;
}
Chris Catignani
źródło
-3

Możesz zmienić CSS poprzedniego rozwiązania, jak poniżej:

.container, .row { text-align: center; }

Powinno to również wyśrodkować wszystkie elementy w obiekcie nadrzędnym div.

Nandu
źródło