Это кажется тривиальным, но после всех исследований и кодирования я не могу заставить его работать. Условия:
- Размер окна браузера неизвестен. Поэтому, пожалуйста, не предлагайте решение с абсолютными размерами пикселей.
- Я не хочу появляться полосы прокрутки (и они не должны, если изображение подходит.)
- Изображение может или не может соответствовать окну браузера. Он всегда сосредоточен.
- Соотношения изображений должны быть сохранены.
- Изображение должно отображаться полностью в окне (без обрезки).
В принципе, я хочу:
.fit {
max-width: 99%;
max-height: 99%;
}
<img class="fit" src="pic.png">
Проблема с приведенным выше кодом заключается в том, что он не работает: pic занимает все необходимое вертикальное пространство, добавляя вертикальную полосу прокрутки.
В моем распоряжении PHP, Javascript, JQuery, но я бы убил только за CSS-решение. Мне все равно, не работает ли он в IE.
Спасибо
Вот текущее лучшее решение, которое у меня есть, с использованием JQuery, вдохновленное ответом gutierrezalex ниже. Идея состоит в том, чтобы дать высоту контейнеру изображения, чтобы max-height
работал как ожидалось:
<!DOCTYPE html>
<html>
<head>
<style>
* {
padding: 0;
margin: 0;
}
.fit {
max-width: 100%;
max-height: 100%;
}
.center {
display: block;
margin: auto;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" language="JavaScript">
function set_body_height()
{
var wh = $(window).height();
$('body').attr('style', 'height:' + wh + 'px;');
}
$(document).ready(function() {
set_body_height();
$(window).bind('resize', function() { set_body_height(); });
});
</script>
</head>
<body>
<img id="the_pic" class="center fit" src="pic.jpg" >
</body>
</html>