Окончательное обновление:
Он превратился в вопрос SCSS, причем любой вход для переменной ширины или высоты можно сделать следующим образом:
http://jsfiddle.net/832v5f0L/41
$div-width : 1600;
$div-height : 900;
$ratio: $div-width / $div-height;
@media screen and (max-width: (100 * $ratio) + vh) {
width: 100vw; // always 100vw to fill
height: (100 / $ratio) + vw; // 100 / ratio
}
@media screen and (min-width: (100 * $ratio) + vh) {
width: (100 * $ratio) + vh; //100 * ratio
height: 100vh; // always 100vh to fill
}
Обновленный ответ:
Портрет мультимедийного запроса автоматически активируется, когда ширина меньше высоты. Который гарантирует, что мы сможем использовать тело { width : 100% ; высота : 100% ; } . wrapper { position : absolute ; слева : 50% ; верх : 50% ; -webkit-transform : translate (- 50% , - 50% ); transform : translate (- 50% , - 50% ); } / * 100vh * (100 / height) с hright 50: 100vh * 100/50 = 200vh * / @media screen и ( max-width : 200vh ) { . обертка { ширина : 100vw ; высота : 50vw ; } } экран @media и ( min-width : 200vh ) { . обертка { ширина : 200vh ; высота : 100vh ; } } . img { / * padding-top: 50%; * / ширина : 100% ; высота : 100% ; background : #ccc ; text-align : center ; background-img : url () } и vw для получения максимально возможного размера без достижения переполнения.
Соотношение между шириной и высотой гарантирует, что вы можете получить фиксированное соотношение сторон.
<div class="wrapper">
<div class="img">
**IMG HERE**
</div>
</div>
img
Обновление: запросы минимальной ширины