There’s a few good ways to both horizontally and vertically center an element, it just comes down to the situation and your preference.
With the following markup:
<div><img src="https://stackoverflow.com/questions/5481821/a.png" width="100" height="100"></div>
line-height
div { width:300px; height:300px; line-height:300px; text-align:center; }
div img { vertical-align:middle; }
Good quick fix without messing with position
ing too much but if actually text is being centered this way could be problematic.
display:table-cell
div { width:300px; height:300px; text-align:center; display:table-cell; vertical-align:middle; }
Works just like good old tables and highly flexible, however only supported in modern browsers.
position:absolute
div { width:300px; height:300px; position:relative; }
div img { top:-50px; left:-50px; position:absolute; margin:50% 0 0 50%; }
top
and left
offsets should be set to half the respective dimensions of the element being positioned. Works well if the containing element needs to be flexible but absolute values are required to work.