Jak wyśrodkować zawartość w kolumnie bootstrap?

126

Próbuję wyśrodkować zawartość kolumny. Na mnie to nie wygląda. Oto mój kod HTML:

<div class="row">
   <div class="col-xs-1 center-block">
       <span>aaaaaaaaaaaaaaaaaaaaaaaaaaa</span>
   </div>
 </div>

JSFiddle Demo

znak
źródło
1
co próbujesz zrobić, wyrównać spando środka .col-xs-1lub wyrównać col-xs-1do środka .row?
Igor Ivancha
1
Próbuję wyrównać zawartość wewnątrz kolumny lub jeszcze lepiej w komórce.
Mark
Ryzykując, że stanie się głupi, wyśrodkuj go wzdłuż której osi?
Luke Puplett

Odpowiedzi:

203

Posługiwać się:

<!-- unsupported by HTML5 -->
<div class="col-xs-1" align="center">

zamiast

<div class="col-xs-1 center-block">

Możesz także użyć bootstrap 3 css:

<!-- recommended method -->
<div class="col-xs-1 text-center">

Bootstrap 4 ma teraz klasy flex, które będą wyśrodkowywać zawartość:

<div class="d-flex justify-content-center">
   <div>some content</div>
</div>

Zauważ, że domyślnie będzie to x-axischyba, że flex-directionjestcolumn

bezwładność
źródło
1
i przy okazji zmień col-xs-1 na col-xs-12. to może być twoja literówka.
bezwładność
48
Atrybut align <div> nie jest obsługiwany w HTML5.
Abeer Sul
8
Nawet jeśli atrybut „align” był nadal dostępny, używanie go przez długi czas uznano za złą praktykę. Skorzystaj z klasy „centrum tekstu”
Omar Abdel Bari
Dzięki! To rozwiązało to również dla mnie przy użyciu metody bootstrap 3.
Pat Doyle
Klasa „centrum tekstu” nie działała, ponieważ mam jeden przycisk i jeden ładujący element div spinner. Dodanie klasy bootstrap "d-flex justify-content-around" rozwiązane dla mnie.
Roger Sampaio
82

[Zaktualizowano grudzień 2020 r.]: Testowana i dołączona 5.0wersja Bootstrap.


Wiem, że to pytanie jest stare. I w pytaniu nie wspomniano, której wersji Bootstrapa używa. Zakładam więc, że odpowiedź na to pytanie została rozwiązana.

Jeśli ktoś z Was (jak ja) natknął się na to pytanie i szukał odpowiedzi przy użyciu obecnego frameworka bootstrap 5.0 (2020) i 4.5 (2019), to oto rozwiązanie.

Bootstrap 4.5 i 5.0

Użyj d-flex justify-content-centerna swoim div kolumny. Spowoduje to wyśrodkowanie wszystkiego wewnątrz tej kolumny.

<div class="row">
    <div class="col-4 d-flex justify-content-center">
        // Image
    </div>
</div>

Jeśli chcesz wyrównać tekst wewnątrz kolumny, po prostu użyj text-center

<div class="row">
    <div class="col-4 text-center">
        // text only
    </div>
</div>

Jeśli masz tekst i obraz w kolumnie, musisz użyć d-flex justify-content-centeri text-center.

<div class="row">
    <div class="col-4 d-flex justify-content-center text-center">
        // for image and text
    </div>
</div>
Dexter
źródło
23

Konwencje nazewnictwa Bootstrap mają własne style, col-XS-1 odnosi się do kolumny zajmującej 8,33% szerokości elementu zawierającego. Twój tekst najprawdopodobniej rozszerzyłby się daleko poza określoną szerokość i nie mógł być w nim wyśrodkowany. Jeśli chcesz, aby ograniczał się do elementu div, możesz użyć czegoś takiego jak podział słów CSS.

Istnieją dwie możliwości wyśrodkowania treści w elemencie wystarczająco dużym, aby rozszerzyć się poza tekst.

Opcja 1: tag HTML Center

<div class="row">
  <div class="col-xs-1 center-block">
    <center>
      <span>aaaaaaaaaaaaaaaaaaaaaaaaaaa</span>
    </center>
  </div>
</div>

Opcja 2: wyrównanie tekstu CSS

<div class="row">
  <div class="col-xs-1 center-block" style="text-align:center;">
    <span>aaaaaaaaaaaaaaaaaaaaaaaaaaa</span>
  </div>
</div>

Jeśli chcesz, aby wszystko było ograniczone do szerokości kolumny

<div class="row">
  <div class="col-xs-1 center-block" style="text-align:center;word-break:break-all;">
    <span>aaaaaaaaaaaaaaaaaaaaaaaaaaa</span>
  </div>
</div>

AKTUALIZACJA - Korzystanie z klasy centrum tekstu Bootstrap

<div class="row">
  <div class="col-xs-1 center-block text-center">
    <span>aaaaaaaaaaaaaaaaaaaaaaaaaaa</span>
  </div>
</div>

Metoda FlexBox

<div class="row">
  <div class="flexBox" style="
    display: flex;
    flex-flow: row wrap;
    justify-content: center;">
    <span>aaaaaaaaaaaaaaaaaaaaaaaaaaa</span>
  </div>
</div>

http://jsfiddle.net/usth0kd2/13/

Sidriel
źródło
Tak, to wydaje się działać, jeśli używam kolumny lg zamiast xs. Ale jeśli mam tylko jedną kolumnę, czy ta kolumna nie powinna zajmować tyle miejsca, ile jest dostępne? Skąd mam wiedzieć, której kolumny użyć, biorąc pod uwagę fakt, że pracuję w trzech przeglądarkach w trzech różnych rozdzielczościach?
Mark
Kolumny Bootstrap wykorzystują responsywne szerokości oparte na procentach, więc powinny być dość podobne niezależnie od rozdzielczości. Jeśli jednak chcesz, aby zajmowały 100% szerokości, gdy są izolowane, musisz nadpisać właściwości width i min-width.
Sidriel
17

Nie ma potrzeby komplikować sprawy. Dzięki Bootstrap 4 możesz po prostu wyrównać elementy w poziomie w kolumnie za pomocą automatycznej klasy marginesówmy-auto

         <div class="col-md-6 my-auto">
           <h3>Lorem ipsum.</h3>
         </div>
Chris Kelker
źródło
17

Bootstrap 4, poziome i pionowe wyrównanie zawartości za pomocą Flex Box

<div class="page-hero d-flex align-items-center justify-content-center">
 <h1>Some text </h1>
</div>

Użyj klasy bootstrap align-items-center i justify-content-center

Tekst wyśrodkowany w pionie i poziomie

.page-hero {
  height: 200px;
  background-color: grey;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

<div class="page-hero d-flex align-items-center justify-content-center">
  <h1>Some text </h1>
</div>

kiranvj
źródło
1
To znacznie lepsza odpowiedź niż przyjęta odpowiedź
Mahir Islam
7

Użyj text-centerzamiast center-block.

Lub użyj center-blockna elemencie rozpiętym (zrobiłem kolumnę szerszą, abyś mógł lepiej zobaczyć wyrównanie):

<div class="row">
   <div class="col-xs-10" style="background-color:#123;">
      <span class="center-block" style="width:100px; background-color:#ccc;">abc</span>
   </div>
</div>
cgalev
źródło
3

To jest prosty sposób.

<div class="row">
  <div class="col-md-6 mx-auto">
    <p>My text</p>
  </div>
</div>

W numer 6 steruje szerokości kolumny.

thanos.a
źródło
2
//add this to your css
    .myClass{
          margin 0 auto;
          }

// add the class to the span tag( could add it to the div and not using a span  
// at all
    <div class="row">
   <div class="col-xs-1 center-block">
       <span class="myClass">aaaaaaaaaaaaaaaaaaaaaaaaaaa</span>
   </div>
 </div>
Eljeddi Oussema
źródło
2

col-lg-4 col-md-6 col-sm-8 col-11 mx-auto

 1. col-lg-4 ≥ 1200px (popular 1366, 1600, 1920+)
 2. col-md-6 ≥ 970px (popular 1024, 1200)
 3. col-sm-8 ≥ 768px (popular 800, 768)
 4. col-11 set default smaller devices for gutter (popular 600,480,414,375,360,312)
 5. mx-auto = always block center


xicooc
źródło
1

Możesz dodać float:none; margin:auto;style, aby wyśrodkować zawartość kolumny.

Prateek
źródło
0

Jeśli żadne z powyższych nie działa (jak w moim przypadku próbując wyśrodkować dane wejściowe), użyłem przesunięcia Boostrap 4:

<div class="row">
    <div class="col-6 offset-3">
        <input class="form-control" id="myInput" type="text" placeholder="Search..">
    </div>
</div>  
Greg Rossi
źródło