I have following div
<divimg.png"> </div> How to align the image so as to be located in the middle and center of div ?
435 Answers
body { margin: 0; } #over img { margin-left: auto; margin-right: auto; display: block; }<div> <img src=""> </div>6<div> <img src="img.png"> </div> 5This can also be done using the Flexbox layout:
STATIC SIZE
.parent { display: flex; height: 300px; /* Or whatever */ background-color: #000; } .child { width: 100px; /* Or whatever */ height: 100px; /* Or whatever */ margin: auto; /* Magic! */ }<div> <img src=""/> </div>DYNAMIC SIZE
html, body { width: 100%; height: 100%; display: flex; background-color: #999; } * { margin: 0; padding: 0; } .parent { margin: auto; background-color: #000; display: flex; height: 80%; width: 80%; } .child { margin: auto; /* Magic! */ max-width: 100%; max-height: 100%; }<div> <img src=""/> </div>I found the example in this article, which does a great job explaining the how to use layout.
1Seems to me that you also wanted that image to be vertically centered within the container. (I didn't see any answer that provided that)
- Pure CSS solution
- Not breaking the document flow (no floats or absolute positioning)
- Cross browser compatibility (even IE6)
- Completely responsive.
HTML
<div> <span></span> <img src="" /> </div> CSS
* { padding: 0; margin: 0; } #over { position:absolute; width:100%; height:100%; text-align: center; /*handles the horizontal centering*/ } /*handles the vertical centering*/ .Centerer { display: inline-block; height: 100%; vertical-align: middle; } .Centered { display: inline-block; vertical-align: middle; } Note: this solution is good to align any element within any element. for IE7, when applying the .Centered class on block elements, you will have to use another trick to get the inline-block working. (that because IE6/IE7 dont play well with inline-block on block elements)
img.centered { display: block; margin: auto auto; } 1You can do this easily by using display:flex CSS property:
#over { height: 100%; width: 100%; display: flex; align-items: center; justify-content: center; } 2#over {position:relative; text-align:center; width:100%; height:100%; background:#CCC;} #over img{ position: absolute; margin: auto; top: 0; left: 0; right: 0; bottom: 0; } 2I still had some issues with other solution presented here. Finally this worked best for me:
<div> <img src="image.png"/> </div> css3:
.child { display: block; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); /* Safari and Chrome */ -moz-transform: translate(-50%, -50%); /* Firefox */ -ms-transform: translate(-50%, -50%); /* IE 9 */ -o-transform: translate(-50%, -50%); /* Opera */ // I suppose you may like those too: // max-width: 80%; // max-height: 80%; } You can read more about that approach at this page.
1Daaawx's answer works, but I think it would be cleaner if we eliminate the inline css.
body { margin: 0; } #over img { margin-left: auto; margin-right: auto; display: block; } div.example { position: absolute; width: 100%; height: 100%; }<div> <img src=""> </div>Basically, setting right and left margin to auto will cause the image to center align.
<divimg.png"> </div> This would be a simpler approach
#over > img{ display: block; margin:0 auto; } Well, we are in 2016... why not use flexbox? It's also responsive. Enjoy.
#over{ display:flex; align-items:center; justify-content:center; }<div> <img src=""> </div>1SIMPLE. 2018. FlexBox. To Check Browser Support - Can I Use
Minimal Solution:
div#over { display: flex; justify-content: center; align-items: center; } To get the widest browser support possible:
div#over { display: -webkit-flex; display: -ms-flex; display: flex; justify-content: center; -ms-align-items: center; align-items: center; } setting the img to display:inline-block while having set the superior div to text-align:center will do the job too
EDIT: to those folks who are playing with display:inline-block >>> don't forget that e.g. two divs like
<div>Div1 content</div>NOSPACEHERE<div>Div2 content</div> really have no spaces between them (as seen here).
Just basic to avoid these (inline block inherent) gaps between them. These gaps can be seen between every two words I'm writing right now! :-) So .. hope this helps some of you.
I've tried many approaches but only this one works for multiple inline elements inside a container div. Here is code to align everything in div at middle.
CSS
.divContainer { vertical-align: middle; text-align: center; <!-- If you want horizontal center alignment --> } .divContainer > * { vertical-align: middle; } HTML
<div> <span>Middle Text</span> <img src="test.png"/> </div> CSS File
.over { display : block; margin : 0px auto; The marked answer for this will not vertically align the image. A suitable solution for modern browsers is flexbox. A flex container can be configured to align its items both horizontally and vertically.
<div> <img src="img.png"> </div> 3Just set parent div css property "text-align:center;"
<div> <img src="img.png"> </div> Try this minimal code:
<div> <img src="image.png"/> </div> And CSS:
.outer{ text-align: center; } .outer img{ display: inline-block; } This worked for me when you have to center align image and your parent div to image has covers whole screen. i.e. height:100% and width:100%
#img{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); } many answer suggests to use margin:0 auto but this works only when the element you trying to make centered is not floating on left or right, that is float css attribute isn't set. In order to do this apply display attribute to table-cell and then apply margin of left and right to auto so your style will look like style="display:table-cell;margin:0 auto;"
<div> <p> <img src="image.jpg" alt="image"/> </p> </div> HTML:
<div> <img src="img.png"> </div> CSS:
#over { text-align: center; } #over img { vertical-align: middle; } 1For center horizontally Just put
#over img { display: block; margin: 0 auto; clear:both; } Another method:
#over img { display: inline-block; text-align: center; } For center vertically Just put:
#over img { vertical-align: middle; } This worked for me:
#image-id { position: absolute; top: 0; left: 0; right: 0; bottom: 0; width: auto; margin: 0 auto; } this did the trick for me.
<div> <asp:Image runat="server" /> </div> 'Note: do not have a css class assocaited to 'BrandImage' in this case
CSS:
.CenterImage { position:absolute; width:100%; height:100% } .CenterImage img { margin: 0 auto; display: block; } Use positioning. The following worked for me...
With zoom to the center of the image (image fills the div):
div{ display:block; overflow:hidden; width: 70px; height: 70px; position: relative; } div img{ min-width: 70px; min-height: 70px; max-width: 250%; max-height: 250%; top: -50%; left: -50%; bottom: -50%; right: -50%; position: absolute; } Without zoom to the center of the image (image does not fill the div):
div{ display:block; overflow:hidden; width: 100px; height: 100px; position: relative; } div img{ width: 70px; height: 70px; top: 50%; left: 50%; bottom: 50%; right: 50%; position: absolute; } I add some more properties to the CSS. Like so:
div#over { width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; -ms-align-items: center; display: -webkit-flex; display: -ms-flex; display: flex; } for a long time, i also tried the solution to put the img at the center of the div, but for my case i just need this type of component on ajax loading progress so i simply tried the following solution, hope this helps for you!
<div></div> You can take a look on this solution:
Centering horizontally and vertically an image in a box
<style type="text/css"> .wraptocenter { display: table-cell; text-align: center; vertical-align: middle; width: ...; height: ...; } .wraptocenter * { vertical-align: middle; } .wraptocenter { display: block; } .wraptocenter span { display: inline-block; height: 100%; width: 1px; } </style> <!--[if lt IE 8]--> <style> .wraptocenter span { display: inline-block; height: 100%; } </style> <!--[endif]--> <div><span></span><img src="..." alt="..."></div>