Align image in center and middle within div
HtmlCssHtml Problem Overview
I have following div
<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png">
</div>
How to align the image so as to be located in the middle and center of div ?
Html Solutions
Solution 1 - Html
body {
margin: 0;
}
#over img {
margin-left: auto;
margin-right: auto;
display: block;
}
<div id="over" style="position:absolute; width:100%; height:100%">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
Solution 2 - Html
<div style="display:table-cell; vertical-align:middle; text-align:center">
<img src="img.png">
</div>
Solution 3 - Html
This 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 class="parent">
<img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</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 class="parent">
<img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>
I found the example in this article, which does a great job explaining the how to use layout.
Solution 4 - Html
Seems 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 id="over">
<span class="Centerer"></span>
<img class="Centered" src="http://th07.deviantart.net/fs71/200H/f/2013/236/d/b/bw_avlonas_a5_beach_isles_wallpaper_image_by_lemnosexplorer-d6jh3i7.jpg" />
</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)
Solution 5 - Html
img.centered {
display: block;
margin: auto auto;
}
Solution 6 - Html
You can do this easily by using display:flex
CSS property:
#over {
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
Solution 7 - Html
#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;
}
Solution 8 - Html
I still had some issues with other solution presented here. Finally this worked best for me:
<div class="parent">
<img class="child" 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.
Solution 9 - Html
Daaawx'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 class="example" id="over">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
Solution 10 - Html
Basically, setting right and left margin to auto will cause the image to center align.
<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png" style="display: block; margin: 0 auto;">
</div>
Solution 11 - Html
This would be a simpler approach
#over > img{
display: block;
margin:0 auto;
}
Solution 12 - Html
Well, we are in 2016... why not use flexbox? It's also responsive. Enjoy.
#over{
display:flex;
align-items:center;
justify-content:center;
}
<div id="over">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
Solution 13 - Html
SIMPLE. 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;
}
Solution 14 - Html
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.
Solution 15 - Html
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 class="divContainer">
<span>Middle Text</span>
<img src="test.png"/>
</div>
Sample code is here: https://jsfiddle.net/yogendrasinh/2vq0c68m/
Solution 16 - Html
CSS File
.over {
display : block;
margin : 0px auto;
Solution 17 - Html
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 id="over" style="position:absolute; width:100%; height:100%; display: flex; align-items: center; justify-content: center;">
<img src="img.png">
</div>
Solution 18 - Html
Just set parent div css property "text-align:center;"
<div style="text-align:center; width:100%">
<img src="img.png">
</div>
Solution 19 - Html
Try this minimal code:
<div class="outer">
<img src="image.png"/>
</div>
And CSS:
.outer{
text-align: center;
}
.outer img{
display: inline-block;
}
Solution 20 - Html
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%);
}
Solution 21 - Html
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;"
Solution 22 - Html
<div>
<p style="text-align:center; margin-top:0px; margin-bottom:0px; padding:0px;">
<img src="image.jpg" alt="image"/>
</p>
</div>
Solution 23 - Html
HTML:
<div id="over">
<img src="img.png">
</div>
CSS:
#over {
text-align: center;
}
#over img {
vertical-align: middle;
}
Solution 24 - Html
For 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;
}
Solution 25 - Html
This worked for me:
#image-id {
position: absolute;
top: 0; left: 0; right: 0; bottom: 0;
width: auto;
margin: 0 auto;
}
Solution 26 - Html
this did the trick for me.
<div class="CenterImage">
<asp:Image ID="BrandImage" 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;
}
Solution 27 - Html
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;
}
Solution 28 - Html
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;
}
Solution 29 - Html
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 id="loader" style="position: absolute;top: 0;right: 0;left: 0;bottom: 0;z-index: 1;background: rgba(255,255,255,0.5) url('your_image_url') no-repeat center;background-size: 135px;display: none;"></div>
Solution 30 - Html
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 class="wraptocenter"><span></span><img src="..." alt="..."></div>
Solution 31 - Html
A simple way would be creating separate styles for both the div and the image and then position them independently. Say if I want to set my image position to 50%, then I would have code which looks like the following....
#over{
position:absolute;
width:100%;
height:100%;
}
#img{
position:absolute;
left:50%;
right:50%;
}
<div id="over">
<img src="img.png" id="img">
</div>
Solution 32 - Html
#over {
display: table-cell;
vertical-align: middle;
text-align: center;
height: 100px;
}
Modify height value for your need.
Solution 33 - Html
This should work.
IMPORTANT FOR TEST: To Run code snippet click left button RUN code snippet, then right link Full page
#fader{
position:fixed;z-index: 10;
top:0;right:0;bottom:0;left:0;
opacity: 0.8;background: black;
width:100%;height:100%;
text-align: center;
}
.faders{display:inline-block;height:100%;vertical-align:middle;}
.faderi{display:inline-block;vertical-align:middle;}
<div id="fader">
<span class="faders"></span>
<img class="faderi" src="https://i.stack.imgur.com/qHF2K.png" />
</div>
Solution 34 - Html
most of the solutions don't work because a div with 100% height doesn't mean the full browser height.
using height: 100vh; works.
<style type="text/css">
body {
margin: 0;
}
#over {
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
vertical-align: middle;
}
</style>
<div id="over">
<img src="test.png" alt="test" width="600">
</div>
Solution 35 - Html
Use bootstraps align-items
and justify-content
. See example below:
<div class="well" style="align-items:center;justify-content:center;">
<img src="img_source" height="50px" width="50px"/>
</div>