It is possible to fit and center a square div
in the viewport and always maintain it's aspect ratio according to width and height?
Requirements :
Example:
To maintain the aspect ratio of a div according to width and height in the viewport, you can use one HTML tag with:
vmin 1/100th of the minimum value between the height and the width of the viewport.
(source : MDN)
position: absolute
and margin: auto;
for the centeringDEMO (resize both window height and width to see it in action)
vmin
units are supported by IE10+ (canIuse) for IE9 support, you need to use a fallback with vm
units instead of vmin
like this :
width: 100vm; /* <-- for IE9 */
height: 100vm; /* <-- for IE9 */
width: 100vmin;
height: 100vmin;
body {
margin:0; /* To prevent scrollbars */
}
div{
/* Aspect ratio */
height:100vm; width:100vm; /* IE9 fallback */
width: 100vmin;
height: 100vmin;
/*Centering */
position: absolute;
top:0;bottom:0;
left:0;right:0;
margin: auto;
/* styling */
background: gold;
}
<div>whatever content you wish</div>