304

Is there any way to center html elements vertically or horizontally inside the main parents?

isherwood
61.4k16 gold badges122 silver badges173 bronze badges
asked Apr 10, 2012 at 12:21

13 Answers 13

261

Update: while this answer was likely correct back in early 2013, it should not be used anymore. The proper solution uses offsets, like so:

class="mx-auto"

As for other users suggestion there are also native bootstrap classes available like:

class="text-center"
class="pagination-centered"
TylerH
21.3k85 gold badges84 silver badges122 bronze badges
answered Feb 1, 2013 at 9:09
Sign up to request clarification or add additional context in comments.

1 Comment

Using text-center for layout is very bad practice. The proper way to align columns in Bootstrap is by using col-XX-offset-Y classes. getbootstrap.com/css/#grid-offsetting. This answer was likely right in 2013 but should not be used anymore today.
78

From the Bootstrap documentation:

Set an element to display: block and center via margin. Available as a mixin and class.

<div class="center-block">...</div>
Dan Dascalescu
154k66 gold badges336 silver badges422 bronze badges
answered Apr 22, 2014 at 21:47

Comments

57

If you are trying to center an image in a div, but the image won't center, this could describe your problem:

JSFiddle Demo of the problem

<div class="col-sm-4 text-center">
 <img class="img-responsive text-center" src="myPic.jpg" />
</div>

The img-responsive class adds a display:block instruction to the image tag, which stops text-align:center (text-center class) from working.

SOLUTION:

<div class="col-sm-4">
 <img class="img-responsive center-block" src="myPic.jpg" />
</div>

JSFiddle demo of solution

Adding the center-block class overrides the display:block instruction put in by using the img-responsive class. Without the img-responsive class, the image would center just by adding text-center class


Also, you should know the basics of flexbox and how to use it, since Bootstrap 4 now uses it natively.

Here is an excellent, fast-paced video tutorial by Brad Schiff

Here is a great cheat sheet

TylerH
21.3k85 gold badges84 silver badges122 bronze badges
answered Jan 1, 2016 at 22:17

Comments

38

In Bootstrap 4, the centering methods have changed.

Horizontal Center in Bootstrap 4

  • text-center is still used for display:inline elements
  • mx-auto replaces center-block to center display:flex children
  • offset-* or mx-auto can be used to center grid columns

mx-auto (auto x-axis margins) will center display:block or display:flex elements that have a defined width, (%, vw, px, etc..). Flexbox is used by default on grid columns, so there are also various flexbox centering methods.

Demo Bootstrap 4 Horizontal Centering

For vertical centering in BS4 see https://stackoverflow.com/a/41464397

TylerH
21.3k85 gold badges84 silver badges122 bronze badges
answered Mar 20, 2017 at 14:10

Comments

32

You may directly write into your CSS file like this:

.content {
 position: absolute;
 top: 50%;
 left:50%;
 transform: translate(-50%,-50%);
 }
<div class = "content" >
 
 <p> some text </p>
 </div>

TylerH
21.3k85 gold badges84 silver badges122 bronze badges
answered Mar 22, 2016 at 11:19

1 Comment

This seems to ignore the fact that this is a Bootstrap question, so interested users will almost certainly have other Bootstrap-specific classes which cause this not to work.
9

i use this

<style>
 html, body {
 height: 100%;
 margin: 0;
 padding: 0 0;
 }
 .container-fluid {
 height: 100%;
 display: table;
 width: 100%;
 padding-right: 0;
 padding-left: 0;
 }
 .row-fluid {
 height: 100%;
 display: table-cell;
 vertical-align: middle;
 width: 100%;
 }
 .centering {
 float: none;
 margin: 0 auto;
 }
</style>
<body>
 <div class="container-fluid">
 <div class="row-fluid">
 <div class="offset3 span6 centering">
 content here
 </div>
 </div>
 </div>
</body>
Ian Campbell
2,74810 gold badges60 silver badges107 bronze badges
answered Jun 19, 2013 at 21:16

1 Comment

Doesn't work in certain cases (see comment on essentially the same answer and doesn't make use of Bootstrap-specific classes for centering.
8

for horizontaly centering you can have something like this:

.centering{
float:none;
margin:0 auto
}
 <div class="span8 centering"></div>
Jsalinas
3122 silver badges11 bronze badges
answered Apr 6, 2013 at 16:52

3 Comments

Does not work (at least not in current implementation), when directly used in an image: <img src="img/logo.png" style="float:none; margin:0 auto" />. Surrounding img with parent div and giving .text-center or .pagination-centered class to parent works like a charm.
to center an element with margin:0 auto, you need to add a width to that element. In the above example there is no width specified because span8 has a width in boobstrap but your image doesn't so <img src="img/logo.png" style="float:none; margin:0 auto; width:300px" /> will center horizontally that image inside the parent
This ignores the "Bootstrap" part of the question.
8

With Bootstrap 4 you can use flex-based HTML classes d-flex, justify-content-center, and align-items-center:

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"/>
<div class="d-flex justify-content-center align-items-center">
 <button type="submit" class="btn btn-primary">Create</button>
</div>

Source: Bootstrap 4.1

TylerH
21.3k85 gold badges84 silver badges122 bronze badges
answered Jul 12, 2018 at 13:14

1 Comment

The only suggestion that worked for me when trying to align "export" button os jQuery datatable. +1
5

I like this solution from a similar question:

Use bootstrap's text-center class on the actual table data <td> and table header <th> elements. So

<td class="text-center">Cell data</td> and <th class="text-center">Header cell data</th>

TylerH
21.3k85 gold badges84 silver badges122 bronze badges
answered Jun 18, 2015 at 12:56

Comments

2

I discovered in Bootstrap 4 you can do this:

center horizontal is indeed text-center class

center vertical however using bootstrap classes is adding both mb-auto mt-auto so that margin-top and margin bottom are set to auto.

answered Nov 19, 2018 at 15:19

2 Comments

text-center worked for me. I was trying to center a button in a md-12 div
This appears to just repeat existing answers.
2

Bootstrap 4's use of flex properties solve this. You can use these classes:

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"/>
<div class="d-flex justify-content-center align-items-center">
 <button type="submit" class="btn btn-primary">Create</button>
</div>

These classes will center your content horizontally and vertically.

TylerH
21.3k85 gold badges84 silver badges122 bronze badges
answered Aug 19, 2019 at 10:20

1 Comment

This repeats the answer from alvseek over a year prior.
0

for bootstrap4 vertical center of few items

d-flex for flex rules

flex-column for vertical direction on items

align-items-center for horizontal centering

justify-content-center for vertical centering

style='height: 300px;' must have for set points where center be calc or use h-100 class

 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"/>
<div class="d-flex flex-column align-items-center justify-content-center bg-secondary" style="
 height: 300px;
">
 <div class="p-2 bg-primary">Flex item</div>
 <div class="p-2 bg-primary">Flex item</div>
 <div class="p-2 bg-primary">Flex item</div>
</div>

answered May 29, 2019 at 10:48

3 Comments

This repeats existing answer by alvseek nearly a year prior.
edit answer for new version of bootstrap and add "run code snippet". my answer more correct. @TylerH run code snippet
difference is class d-column
0

With Bootstrap 5 you can use my-auto to verticaly center inside a col

answered May 2, 2023 at 13:08

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.