I am trying to center my Container in the middle of the page using Bootstrap 4. I have been unsuccessful thus far. Any help would be appreciated.
I have built it at Codepen.io so you guys can play with it and let me know what works as I am about out of ideas...
var currentAuthor = ""; var currentQuote = ""; function randomQuote() { $.ajax({ url: "", dataType: "jsonp", data: "method=getQuote&format=jsonp&lang=en&jsonp=?", success: function( response ) { $("#quote-content").html('<h2><i aria-hidden="true"> ' + response.quoteText + ' <i aria-hidden="true"></i></h2>'); $("#quote-author").html('<p><em>' + response.quoteAuthor + '</em></p>'); currentAuthor = response.quoteAuthor; currentQuote = response.quoteText } }); } function openURL(url){ window.open(url,'Share', 'width=550, height=400, toolbar=0, scrollbars=1 ,location=0 ,statusbar=0,menubar=0, resizable=0'); } function tweetQuote(){ openURL(' + encodeURIComponent('"' + currentQuote + '" - ' + currentAuthor)); } $(document).ready(function () { randomQuote(); $("#get-another-quote-button").click(function(){ randomQuote(); }); $('#tweet').on('click', function() { tweetQuote(); }); });html, body { background-image: url(""); background-color: #17234E; margin-bottom: 0; min-height: 30%; background-repeat: no-repeat; background-position: center; -webkit-background-size: cover; background-size: cover; } .btn-new-quote { color: #0C0C0D; background-color: transparent; border-color: #414147; } .btn-new-quote:hover { color: #0C0C0D; background-color: #9A989E; border-color: #0C0C0D; } #tweet { color: RGB(100, 100, 100); } #tweet:hover { color: RGB(50, 50, 50); } .jumbotron { position: relative; top: 50%; transform: translateY(-50%); opacity: .85; border-color: RGB(50, 50, 50); padding-bottom: 8px; }<script src=""></script> <link rel="stylesheet" href=""> <div> <div> <div> <div> <h2><i aria-hidden="true"></i><i aria-hidden="true"></i></h2> <p><em></em></p> <hr> <div> <div> <a href="#"> <h2><i aria-hidden="true"></i></h2> </a> </div> <div> <button type="button">Don't Quote Me on This...</button> </div> </div> </div> </div> </div> </div>019 Answers
Important! Vertical center is relative to the height of the parent
If the parent of the element you're trying to center has no defined height, none of the vertical centering solutions will work!
Now, onto vertical centering...
Bootstrap 5 (Updated 2021)
Bootstrap 5 is still flexbox based so vertical centering works the same way as Bootstrap 4. For example, align-items-center, justify-content-center or auto margins can used on the flexbox parent (row or d-flex).
- use
align-items-centeron a flexbox row parent (roword-flex) - use
justify-content-centeron a flexbox column parent (d-flex flex-column) - use
my-autoon a flexbox parent
Vertical Center in Bootstrap 5
Bootstrap 4
You can use the new flexbox & size utilities to make the container full-height and display: flex. These options don't require extra CSS (except that the height of the container (ie:html,body) must be 100%).
Option 1 align-self-center on flexbox child
<div> <div> I'm vertically centered </div> </div> Option 2 align-items-center on flexbox parent (.row is display:flex; flex-direction:row)
<div> <div> <div> <div> I'm vertically centered </div> </div> </div> </div> Option 3 justify-content-center on flexbox parent (.card is display:flex;flex-direction:column)
<div> <div> <div> <div> <div> ...card content... </div> </div> </div> </div> </div> More on Bootstrap 4 Vertical Centering
Now that Bootstrap 4 offers flexbox and other utilities, there are many approaches to vertical alignment.
1 - Vertical Center Using Auto Margins:
Another way to vertically center is to use my-auto. This will center the element within it's container. For example, h-100 makes the row full height, and my-auto will vertically center the col-sm-12 column.
<div> <div> <div>Card</div> </div> </div> Vertical Center Using Auto Margins Demo
my-auto represents margins on the vertical y-axis and is equivalent to:
margin-top: auto; margin-bottom: auto; 2 - Vertical Center with Flexbox:
Since Bootstrap 4 .row is now display:flex you can simply use align-self-center on any column to vertically center it...
<div> <div> <div> Center </div> </div> <div> <div> Taller </div> </div> </div> or, use align-items-center on the entire .row to vertically center align all col-* in the row...
<div> <div> <div> Center </div> </div> <div> <div> Taller </div> </div> </div> Vertical Center Different Height Columns Demo
See this Q/A to center, but maintain equal height
3 - Vertical Center Using Display Utils:
Bootstrap 4 has display utils that can be used for display:table, display:table-cell, display:inline, etc.. These can be used with the vertical alignment utils to align inline, inline-block or table cell elements.
<div> <div> <div> I am centered vertically </div> </div> </div> Vertical Center Using Display Utils Demo
More examples
Vertical center image in <div>
Vertical center .row in .container
Vertical center and bottom in <div>
Vertical center child inside parent
Vertical center full screen jumbotron
Important! Did I mention height?
Remember vertical centering is relative to the height of the parent element. If you want to center on the entire page, in most cases, this should be your CSS...
body,html { height: 100%; } Or use min-height: 100vh (min-vh-100 in Bootstrap 4.1+) on the parent/container. If you want to center a child element inside the parent. The parent must have a defined height.
Also see:
Vertical alignment in bootstrap 4
Bootstrap Center Vertical and Horizontal Alignment
you can vertically align your container by making the parent container flex and adding align-items:center:
body { display:flex; align-items:center; } 7Following bootstrap 4 classes helped me solve this
<div> <img width=3rem src=".." alt="..."> </div> 2Using bootstrap version 5 or later, use the code below to center the content horizontally and vertically.
<div> <h1>Centered horizontally and vertically!</h1> </div> 3Because none of the above worked for me, I am adding another answer.
Goal: To vertically and horizontally align a div on a page using bootstrap 4 flexbox classes.
Step 1: Set your outermost div to a height of 100vh. This sets the height to 100% of the Veiwport Height. If you don't do this, nothing else will work. Setting it to a height of 100% is only relative to the parent, so if the parent is not the full height of the viewport, nothing will work. In the example below, I set the Body to 100vh.
Step 2: Set the container div to be the flexbox container with the d-flex class.
Step 3: Center div horizontally with the justify-content-center class.
Step 4: Center div vertically with the align-items-center
Step 5: Run page, view your vertically and horizontally centered div.
Note that there is no special class that needs to be set on the centered div itself (the child div)
<body> <div> <div> </div> </div> </body> 2I did it this way with Bootstrap 4.3.1:
<div> <div> I'm in the middle </div> </div> 1.jumbotron { position: relative; top: 50%; transform: translateY(-50%); } <div> <div> <img src="/assets/images/ebook2.png" alt=""> </div> <div> <h3>Heading</h3> <p>Some text.</p> </div> </div> This line is where the magic happens <div>, the my-auto will center the content of the column. This works great with situations like the code sample above where you might have a variable sized image and need to have the text in the column to the right line up with it.
I've tried all the answers herefrom, but found out here is the difference between h-100 and vh-100 Here is my solution:
<div className='container vh-100 d-flex align-items-center col justify-content-center'> <div className=""> ... </div> </div > In Bootstrap 4 (beta), use align-middle. Refer to Bootstrap 4 Documentation on Vertical alignment:
Change the alignment of elements with the vertical-alignment utilities. Please note that vertical-align only affects inline, inline-block, inline-table, and table cell elements.
Choose from
.align-baseline,.align-top,.align-middle,.align-bottom,.align-text-bottom, and.align-text-topas needed.
<div> <div> <span>Our Offer</span> <h2>Today’s Special </h2> <p>One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly.</p> </div> </div> 1<!DOCTYPE html> <html lang="en"> <head> <title>Bootstrap Example</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href=""> <script src=""></script> <script src=""></script> <script src=""></script> </head> <body> <div> <div> <div>Center Div Here</div> </div> </div> </body> </html> 1Vertical align Using this bootstrap 4 classes:
Method1:
parent: d-table
AND
child: d-table-cell & align-middle & text-center
eg:
<div> <div> <img src="assets/images/devices/Xl.png" height="30rem"> </div> </div> and if you want parent be circle:
<div> <div> <img src="assets/images/devices/Xl.png" height="30rem"> </div> </div> which two custom css classes are as follow:
.tab-icon-holder { width: 3.5rem; height: 3.5rem; } .rounded-circle { border-radius: 50% !important } Final usage can be like for example:
<div> <div> <div> <div> <img src="assets/images/devices/Xl.png" height="30rem"> </div> </div> <div> <div> <img src="assets/images/devices/Lg.png" height="30rem"> </div> </div> ... </div> </div> Method2: You can use following:
parent: h-100 d-table mx-auto
AND
child: d-table-cell align-middle
Method3:
You can use following:
parent: d-flext align-items-center
also if you want content be center horisontally too:
1parent: d-flext align-items-center justify-content-center
bootstrap 5 and blazor web assembly:
<div> <button>Register</button> <button>Login</button></div> use .my-auto (bootsrap4) css class on yor div
Place your content within a flexbox container that is 100% high i.e h-100. Then justify the content centrally by using justify-content-center class.
<section> <div> <h1>Hello, Malawi!</h1> </div> </section> 0For all Bootstrap versions 2, 3, 4 and 5 with only two custom classes suitable with any height and width.
.d_tbl{ display:table; width:100%; height:200px; } .d_tblCel{ vertical-align: middle; display: table-cell; text-align: center; }<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href=""> <script src=""></script> <script src=""></script> </head> <body> <div> <div> <div> <h3>Centered horizontally and vertically</h3> <p>for all bootstrap versions with only two custom classes</p> </div> </div> </div> </body> </html>1in Bootstrap 5 we can do it easily. Below is an example to align card. We just have to set the card width, then the rest setting are using bootstrap 5 class.
<div> <div> <div> <div> <div> <h1>I'am centered vertically and horizontally</h1> </div> </div> </div> </div> </div> In Bootstrap 4.1.3:
This worked for me when I was trying to center a bootstrap badge inside of a container > row > column next to a h1 title.
What did work was some simple css:
.my-valign-center { vertical-align: 50%; } or
<span>My Badge</span> 
