Почему изображение дергается при ресайзе?

Написал небольшой скрипт для автоматического ресайза картинки под размер окна, но при выполнении кода картинка дергается и не всегда правильно расчитывает размеры, не могу понять в чем дело.
function resizeImage() {
    
    var otn = $('.resImg').width() / $('.resImg').height();
    
    if ($('.resImg').width() >= $(window).width()) {
        $(".resImg").css({
            width: $(window).height() * otn + 'px'
        });
    } else {
        $(".resImg").css({
            width: $(window).width() + 'px'
        });
    }
}
resizeImage();
$(window).resize(resizeImage);


пример на jsfiddle
  • Вопрос задан
  • 1059 просмотров
Пригласить эксперта
Ответы на вопрос 5
kawabanga
@kawabanga
почему гвоздь, который вы забиваете, забивается? )
Ответ написан
Комментировать
keslo
@keslo
У вас идея такая:
- Если ширина картинки больше, чем ширина окна, то... в свойство картинки width записываем height * на пропорцию картинки.

А где вообщем-то сам ресайз по горизонтали?

Если вы привязываетесь к ширине окна, то, по идее, если картинка шире окна, то присваиваем картинке ширину окна, а вот высоту картинки находим с помощью пропорции относительно новой ширины.
Ответ написан
SKolt
@SKolt
https://www.instagram.com/seregamih/
А почему не CSS3?? Или это сугубо в учебных целях делаете? :)
Ответ написан
Потому что нельзя ожидать быстрого срабатывания при такой организации. Зачем нагружать CSS вообще, если пишите на JS, то и пишите на нем...не стоит думать что присвоение стилей на JS это очень быстродейственно)) тем более при ресайзе окна без таймаута. Вообще пишите прямо так:
function resizeImage() {

    var wWindow = $(window).width();
    var hWindow = $(window).height();

    if ($('.resImg').width >= wWindow) {
        $(".resImg").width(hWindow * 1.5);
    } else {
        $(".resImg").width(wWindow);
    }
}
resizeImage();
$(window).resize(resizeImage);

...и будет вам счастье
Ответ написан
Romanche
@Romanche
Жизнь–игра. Задумано плохо, но графика потрясная!
Может попробовать сделать проще:
<div>
    <img class="resImg" src="http://cs625521.vk.me/v625521867/1605a/Ka0S9DSmW-s.jpg"/>    
</div>

div{
    width:100%;
    overflow: hidden;
}
img{
    display: block;
    width: 100%;
    min-width: 1000px;
    height: auto;
}


вроде функционирует как у Вас, только без дергов :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы