How to center a div with Bootstrap2? [duplicate]
Asked Answered
A

9

85

http://twitter.github.com/bootstrap/scaffolding.html

I tried like all combinations:

<div class="row">
  <div class="span7 offset5"> box </div>
</div>

or

<div class="container">
  <div class="row">
    <div class="span7 offset5"> box </div>
  </div>  
</div>

changed span and offset numbers...

But I cant get a simple box perfectly centered on a page :(

I just want a 6-column-wide box centered...


edit:

did it with

<div class="container">
  <div class="row" id="login-container">
    <div class="span8 offset2">
       box
    </div>
  </div>
</div>

But the box is too wide, is there any way I can do it with span7 ?

span7 offset2 gives extra padding to the left span7 offset3 extra padding to the right...

Anguish answered 21/2, 2012 at 18:23 Comment(3)
Are you looking to center a box horizontally on the page? Because the container class already does that, thought you might be looking to center a smaller box. Or are you looking to center a box both horizontally and vertically on the page?Emilia
a box thing you say? . . . .here in developer world we call that a divPeltast
What version of Bootstrap were you using? it should be reflected in the title as people looking this up will end up here and see outdated code.Body
L
46

besides shrinking the div itself to the size you want, by reducing span size like so... class="span6 offset3", class="span4 offset4", etc... something as simple as style="text-align: center" on the div could have the effect you're looking for

you can't use span7 with any set offset and get the span centered on the page (Because total spans = 12)

Librate answered 23/2, 2012 at 19:4 Comment(3)
Consider Zuhaib Ali's answer. text-align: center doesn't work for centering elements within a <div>. The offset* class isn't truly centering components. It is merely creating the illusion of centering. You can verify this by resizing the window and seeing that the components do not remain centered. When you apply Zuhaib Ali's method, the components stay centered.Murrell
Instead of adding inline styling (style="text-align:center"), add the class "center-block" and get centred content within your centred div.Cathepsin
col-md-4 or col-lg-4 is equal a margin: 0 auto; ?Beauregard
F
165

Bootstrap's spans are floated to the left. All it takes to center them is override this behavior. I do this by adding this to my stylesheet:

.center {
     float: none;
     margin-left: auto;
     margin-right: auto;
}

If you have this class defined, just add it to the span and you're good to go.

<div class="span7 center"> box </div>

Note that this custom center class must be defined after the bootstrap css. You could use !important but that isn't recommended.

Flax answered 18/2, 2013 at 9:31 Comment(2)
I'm using Rails, so I just want to point out that in application.css, add *= require bootstrap.min before *= require_self and *= require_treeGujarati
This didn't work for me, but adding display: table seemed to fix itRaynold
L
46

besides shrinking the div itself to the size you want, by reducing span size like so... class="span6 offset3", class="span4 offset4", etc... something as simple as style="text-align: center" on the div could have the effect you're looking for

you can't use span7 with any set offset and get the span centered on the page (Because total spans = 12)

Librate answered 23/2, 2012 at 19:4 Comment(3)
Consider Zuhaib Ali's answer. text-align: center doesn't work for centering elements within a <div>. The offset* class isn't truly centering components. It is merely creating the illusion of centering. You can verify this by resizing the window and seeing that the components do not remain centered. When you apply Zuhaib Ali's method, the components stay centered.Murrell
Instead of adding inline styling (style="text-align:center"), add the class "center-block" and get centred content within your centred div.Cathepsin
col-md-4 or col-lg-4 is equal a margin: 0 auto; ?Beauregard
R
35

Bootstrap3 has the .center-block class that you can use. It is defined as

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

Documentation here.

Revegetate answered 27/11, 2014 at 6:56 Comment(0)
B
21

If you want to go full-bootstrap (and not the auto left/right way) you need a pattern that will fit within 12 columns e.g. 2 blanks, 8 content, 2 blanks. That's what this setup will do. It only covers the -md- variants, I tend to snap it to full size for small by adding col-xs-12

<div class="container">
  <div class="col-md-8 col-md-offset-2">
     box
  </div>
</div>
Baltimore answered 26/5, 2014 at 23:39 Comment(2)
is that a valid way of centering divs in boostrap?Holmquist
The content of the div is not centered, but the div itself is.Baltimore
C
8

Sounds like you just wanted to center align a single container. The bootstrap framework might be overcomplicating that one example, you could have just had a standalone div with your own styling, something like:

<div class="login-container">
  <!-- Your Login Form -->
</div>

and style:

.login-container {
  margin: 0 auto;
  width: 400px; /* Whatever exact width you are looking for (not bound by preset bootstrap widths) */
}

That should work fine if you are nested somewhere within a bootstrap .container div.

Counterattraction answered 7/10, 2012 at 6:7 Comment(0)
B
3

add the class centercontents

/** Center the contents of the element **/
.centercontents {
    text-align: center !important;
}
Bluff answered 4/2, 2013 at 19:37 Comment(0)
P
0

@ZuhaibAli code kind of work for me but I changed it a little bit:

I created a new class in css

.center {
     float: none;
     margin-left: auto;
     margin-right: auto;
}

then the div become

<div class="center col-md-6"></div>

I added col-md-6 for the width of the div itself which in this situation meant the div is half the size, there are 1 -12 col md in bootstrap.

Placable answered 20/9, 2017 at 12:5 Comment(0)
O
0

Follow this guidance https://getbootstrap.com/docs/3.3/css/

Use .center-block

.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
Overactive answered 20/9, 2017 at 12:10 Comment(0)
O
0

wrap the div in a parent div with class row then add style margin:0 auto; to the div

<div class="row">
  <div style="margin: 0 auto;">center</div>
</div>
Onym answered 28/4, 2020 at 23:47 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.