Align image in center and middle within div

HtmlCss

Html 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>

JSFiddle

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)

Working Fiddle:

  1. Pure CSS solution
  2. Not breaking the document flow (no floats or absolute positioning)
  3. Cross browser compatibility (even IE6)
  4. 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>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDro1n2View Question on Stackoverflow
Solution 1 - HtmlGurpreet SinghView Answer on Stackoverflow
Solution 2 - HtmlJohn K.View Answer on Stackoverflow
Solution 3 - HtmlaerdmanView Answer on Stackoverflow
Solution 4 - HtmlavrahamcoolView Answer on Stackoverflow
Solution 5 - HtmlNitinView Answer on Stackoverflow
Solution 6 - Htmltanveer ahmad darView Answer on Stackoverflow
Solution 7 - HtmldhirView Answer on Stackoverflow
Solution 8 - Htmlpawel7318View Answer on Stackoverflow
Solution 9 - HtmlLizardKGView Answer on Stackoverflow
Solution 10 - HtmlGarconisView Answer on Stackoverflow
Solution 11 - HtmlSujay sreedharView Answer on Stackoverflow
Solution 12 - HtmlGabMicView Answer on Stackoverflow
Solution 13 - HtmlNadavView Answer on Stackoverflow
Solution 14 - HtmlsashaView Answer on Stackoverflow
Solution 15 - HtmlYogeeView Answer on Stackoverflow
Solution 16 - HtmlSabarish RView Answer on Stackoverflow
Solution 17 - HtmlWilliamView Answer on Stackoverflow
Solution 18 - HtmlPratik FanseView Answer on Stackoverflow
Solution 19 - HtmlluchopintadoView Answer on Stackoverflow
Solution 20 - HtmlAkshay BandeView Answer on Stackoverflow
Solution 21 - Htmlvikas devdeView Answer on Stackoverflow
Solution 22 - Htmlbetty.88View Answer on Stackoverflow
Solution 23 - HtmlLahoriView Answer on Stackoverflow
Solution 24 - HtmlSanjib DebnathView Answer on Stackoverflow
Solution 25 - HtmlSileriaView Answer on Stackoverflow
Solution 26 - Htmljulian9876View Answer on Stackoverflow
Solution 27 - HtmlThomasAFinkView Answer on Stackoverflow
Solution 28 - HtmlKhanh Le Tan VuView Answer on Stackoverflow
Solution 29 - HtmlKarthickView Answer on Stackoverflow
Solution 30 - HtmlfpauerView Answer on Stackoverflow
Solution 31 - HtmlKSJ10View Answer on Stackoverflow
Solution 32 - HtmlTerry LinView Answer on Stackoverflow
Solution 33 - HtmlIntactoView Answer on Stackoverflow
Solution 34 - HtmlKlausView Answer on Stackoverflow
Solution 35 - HtmlMwizaView Answer on Stackoverflow