Easiest thing is input it as a "div" give it a "margin:0 auto " but if you want it to be centered u need to give it a width
Div{
Margin: 0 auto ;
Width: 100px ;
}
Margin: 0 auto; is the correct answer for horizontal centering only. For centering both ways something like this will work, using jquery:
var cenBtn = function() {
var W = $(window).width();
var H = $(window).height();
var BtnW = insert button width;
var BtnH = insert button height;
var LeftOff = (W / 2) - (BtnW / 2);
var TopOff = (H / 2) - (BtnH /2);
$("#buttonID").css({left: LeftOff, top: TopOff});
};
$(window).bind("load, resize", cenBtn);
Update ... five years later, one could use flexbox on the parent DIV element to easily center the button both horizontally and vertically.
Including all browser prefixes, for best support
div {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-align : center;
-moz-box-align : center;
-ms-flex-align : center;
-webkit-align-items : center;
align-items : center ;
justify-content : center;
-webkit-justify-content : center;
-webkit-box-pack : center;
-moz-box-pack : center;
-ms-flex-pack : center;
}
#container {_x000D_
position: relative;_x000D_
margin: 20px;_x000D_
background: red;_x000D_
height: 300px;_x000D_
width: 400px;_x000D_
}_x000D_
_x000D_
#container div {_x000D_
display: -webkit-box;_x000D_
display: -moz-box;_x000D_
display: -ms-flexbox;_x000D_
display: -webkit-flex;_x000D_
display: flex;_x000D_
-webkit-box-align: center;_x000D_
-moz-box-align: center;_x000D_
-ms-flex-align: center;_x000D_
-webkit-align-items: center;_x000D_
align-items: center;_x000D_
justify-content: center;_x000D_
-webkit-box-pack: center;_x000D_
-moz-box-pack: center;_x000D_
-ms-flex-pack: center;_x000D_
-webkit-justify-content: center;_x000D_
justify-content: center;_x000D_
}
_x000D_
<!-- using a container to make the 100% width and height mean something -->_x000D_
<div id="container"> _x000D_
<div style="width:100%; height:100%">_x000D_
<button type="button">hello</button>_x000D_
</div>_x000D_
</div>
_x000D_
Responsive way to center your button in a div:
<div
style="display: flex;
align-items: center;
justify-content: center;
margin-bottom: 2rem;">
<button type="button" style="height: 10%; width: 20%;">hello</button>
</div>
Supposing div is #div and button is #button:
#div {
display: table-cell;
width: 100%;
height: 100%;
text-align: center;
vertical-align: center;
}
#button {}
Then nest the button into div as usual.
You could just make:
<div style="text-align: center; border: 1px solid">_x000D_
<input type="button" value="button">_x000D_
</div>
_x000D_
Or you could do it like this instead:
<div style="border: 1px solid">_x000D_
<input type="button" value="button" style="display: block; margin: 0 auto;">_x000D_
</div>
_x000D_
The first one will center align everything inside the div. The other one will center align just the button.
With the limited detail provided, I will assume the most simple situation and say you can use text-align: center
:
Super simple answer that will apply to most cases is to just make set the margin to 0 auto
and set the display to block
. You can see how I centered my button in my demo on CodePen
Responsive CSS option to center a button vertically and horizontally without being concerned with parent element size (using data attribute hooks for clarity and separation concerns):
HTML
<div data-element="card">
<div data-container="button"><button>CTA...</button></div>
</div>
CSS
[data-container="button"] {
position: absolute;
top: 50%;
text-align: center;
width: 100%;
}
To center a <button type = "button">
both vertically and horizontally within a <div>
which width is computed dynamically like in your case, this is what to do:
text-align: center;
to the wrapping <div>
: this will center the button whenever you resize the <div>
(or rather the window)For the vertical alignment, you will need to set margin: valuepx;
for the button. This is the rule on how to calculate valuepx
:
valuepx = (wrappingDIVheight - buttonHeight)/2
Here is a JS Bin demo.
Using flexbox
.Center {
display: flex;
align-items: center;
justify-content: center;
}
And then adding the class to your button.
<button class="Center">Demo</button>
et voila:
button {
width: 100px; // whatever your button's width
margin: 0 auto; // auto left/right margins
display: block;
}
Update: If OP is looking for horizontal and vertical centre, this answer will do it for a fixed width/height element.
Came across this and thought I'd leave the solution I used as well, which utilizes line-height
and text-align: center
to do both vertical and horizontal centering:
You should take it simple here you go :
first you have the initial position of your text or button :
<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
<h2> Simple Text </h2>
<div>
<button> Simple Button </button>
</div>
</div>
By adding this css code line to the h2 tag or to the div tag that holds the button tag
style:" text-align:center; "
Finaly The result code will be :
<div style="background-color:green; height:200px; width:400px; margin:0 0 0 35%;">
<h2 style="text-align:center;"> Simple Text </h2> <!-- <<--- here the changes -->
<div style="text-align:center"> <!-- <<--- here the changes -->
<button> Simple Button </button>
</div>
</div>
div {
text-align : center;
}
button {
width: 50%;
margin: 1rem auto;
}
_x000D_
<div style="width:100%; height:100%; border: 1px solid">
<button type="button">hello</button>
</div>
_x000D_
This is what I mostly do.
I think bootstrap also uses this in "mx-auto".
Source: Stackoverflow.com