Add CSS. Set the top and left properties to 50% to center the left-top corner of the <div>. Set the margin-top and margin-left properties to the negative half of the height and width of the <div>.
This tag has been deprecated in HTML 4 (and XHTML 1) in favor of the CSS text-align property, which can be applied to the <div> element or to an individual <p> . For centering blocks, use other CSS properties like margin-left and margin-right and set them to auto (or set margin to 0 auto ).
Koen's answer doesn't exactly centers the element.
The proper way is to use CCS3 transform
property. Although it's not supported in some old browsers. And we don't even need to set a fixed or relative width
.
.centered {
position: fixed;
left: 50%;
transform: translate(-50%, 0);
}
Working jsfiddle comparison here.
For the ones having this same problem, but with a responsive design, you can also use:
width: 75%;
position: fixed;
left: 50%;
margin-left: -37.5%;
Doing this will always keep your fixed div
centered on the screen, even with a responsive design.
You could use flexbox for this as well.
.wrapper {
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
/* this is what centers your element in the fixed wrapper*/
display: flex;
flex-flow: column nowrap;
justify-content: center; /* aligns on vertical for column */
align-items: center; /* aligns on horizontal for column */
/* just for styling to see the limits */
border: 2px dashed red;
box-sizing: border-box;
}
.element {
width: 200px;
height: 80px;
/* Just for styling */
background-color: lightyellow;
border: 2px dashed purple;
}
<div class="wrapper"> <!-- Fixed element that spans the viewport -->
<div class="element">Your element</div> <!-- your actual centered element -->
</div>
From the post above, I think the best way is
width: 100%
margin-left: auto
and margin-right: auto
, or for table make it align="center"
.Hope this will help.
Normal divs should use margin-left: auto
and margin-right: auto
, but that doesn't work for fixed divs. The way around this is similar to Andrew's answer, but doesn't use the deprecated <center>
thing. Basically, just give the fixed div a wrapper.
#wrapper {
width: 100%;
position: fixed;
background: gray;
}
#fixed_div {
margin-left: auto;
margin-right: auto;
position: relative;
width: 100px;
height: 30px;
text-align: center;
background: lightgreen;
}
<div id="wrapper">
<div id="fixed_div"></div>
</div
This will center a fixed div within a div while allowing the div to react with the browser. i.e. The div will be centered if there's enough space, but will collide with the edge of the browser if there isn't; similar to how a regular centered div reacts.
<div class="container-div">
<div class="center-div">
</div>
</div>
.container-div {position:fixed; left: 0; bottom: 0; width: 100%; margin: 0;}
.center-div {width: 200px; margin: 0 auto;}
This should do the same.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With