Я пытаюсь динамически масштабировать переменные портретные и ландшафтные изображения, чтобы соответствовать пропорционально в окне браузера.
Моя текущая попытка изменения размера изображения находится здесь: http://jsfiddle.net/6pnCH/4/
Мне нужно, чтобы изображение было масштабировано вертикально при загрузке браузера.
На данный момент у меня только началось масштабирование при onBrowserResize
.
Также изображение, похоже, растягивается и деформируется при изменении размера, и мне нужно держать их пропорциональными.
Довольно уверен, что Javascript является ключом к решению этого вопроса, но мои знания об этом довольно ограничены, поэтому любая помощь была бы весьма признательна.
Код Javascript:
$(window).resize(function(){
$('.slide img').css({
maxHeight: $('.slide').height() * 0.8,
maxWidth: $('.slide').width() * 0.8
});
});
Код CSS:
#slide {
text-align: center;
background-color: green;
height: 100%;
width: 100%;
display: inline-block;
}
.slide {
vertical-align: middle;
display: table-cell;
}
.slide:after {
content: ' ';
height: 100%;
display: inline-block;
vertical-align: middle
}
.slide img {
vertical-align: middle;
max-width: 100%;
height: auto;
width: auto\9; /* ie8 */
}
Код HTML:
<div id="slide" class="slide"><img src="image.jpg"></div>
это прекрасно иллюстрирует, что я сделал после и сделал без javascript в конце концов!
http://codepen.io/jasonbradberry/pen/sHJhl
для кого-то еще после того же, мой измененный код будет выглядеть так:
.slide img {
vertical-align: middle;
max-width: 100%;
max-height: 100%;
width: auto;
}
Как насчет использования css3 background-size: cover
или background-size:contain
?
что-то вроде этого:
<div style="width:100%; height:100%; background-size:cover; background-image:url(YOUR_IMAGE.jpg);"></div>
Вот обновленный Fiddle
На этот раз вам не нужно использовать Javascript
.
Вы не хотите растягивать img
поэтому не используйте ширину и высоту, применяемые к нему, посмотрите.
Только CSS все еще может сделать трюк:
#slide {
text-align: center;
background-color: green;
height: 100%;
width: 100%;
display: inline-block;
}
.slide {
vertical-align: middle;
display: table-cell;
}
.slide:after {
content: ' ';
height: 100%;
display: inline-block;
vertical-align: middle
}
.slide img {
vertical-align: middle;
max-width: 100%;
background-color: blue;
padding: 10%; //here is the trick
}