Поворот изображений с помощью jQuery ... Но изменение размера не работает

0

У меня есть изображение, которое нужно повернуть. Это изображение ориентировано либо на пейзаж, либо на портрет.

У меня есть форма HTML5, чтобы принимать степени вращения с шагом 90 каждый клик. Когда это значение изменяется, изображение должно вращаться и изменять размер. Он должен всегда иметь ширину 770 пикселей, но может быть такой же высокой, как и должен быть.

Я написал следующий обработчик событий, но он не работает так, как я ожидал.

Случай использования. Когда изображение является портретом, его начальные значения составляют 770x1027 (шхх). При повороте на 90 градусов, я ожидал бы, что функция ниже поворачивает изображение, задает ширину = 1027 и height = 770. Но я вижу, что ширина и высота установлены на 770. Что я не вижу?

$("#degrees").change(function(){
    var element$ = $("#photo-submission"),
        w = element$.width(), 
        h = element$.height(),
        deg = $(this).val();


    element$.removeAttr("style").attr({
        "style": "-webkit-transform:rotate("+ deg +"deg); width: "+ h +"px; height: "+ w + "px;"
    })
});
  • 1
    "width:" + h ?
  • 0
    да, если изначально w = 770, h = 1027 ... когда я поворачиваю на 90 градусов, мне нужно изменить размер изображения так, чтобы оно по-прежнему было не шире, чем 770, но, поскольку оно теперь на боку, высота изображения - это наша визуальная ширина. Смешение? Я знаю, что ты чувствуешь.
Показать ещё 1 комментарий
Теги:
rotation

2 ответа

1

Как пробовать его с помощью метода jQuery, фактически сделанного для изменения свойств CSS, таким образом было бы легче отслеживать ваши переменные и помещать их в нужные места:

$("#degrees").change(function(){
    var el  = $("#photo-submission"),
        w   = el.width(), 
        h   = el.height(),
        deg = this.value;

    el.css({
        '-webkit-transform' : 'rotate(' +deg+ 'deg)',
        width  : w,
        height : h
    });
});

FIDDLE

Реальное преимущество этого заключается в том, что вам не нужно устанавливать ширину и высоту того, что уже есть, что в основном является тем, что вы делаете, поэтому этого достаточно

$("#degrees").change(function(){
    $("#photo-submission").css({
        '-webkit-transform' : 'rotate(' + this.value + 'deg)'
    });
});
  • 0
    Спасибо за ваш JSFiddle, но он показывает квадратное изображение. Это было бы довольно просто. Я пытаюсь работать с прямоугольным изображением, следя за тем, чтобы верхний левый угол изображения всегда находился в верхнем левом углу его контейнера и никогда не превышал 770.
  • 0
    Я совсем не понимаю, вы получаете высоту и ширину элемента и устанавливаете высоту и ширину равными одинаковым значениям для одного и того же элемента, что это меняет?
Показать ещё 2 комментария
1

Кажется, вы изменили свою ширину и высоту.

element$.removeAttr("style").attr({
    "style": "-webkit-transform:rotate("+ deg +"deg); width: "+ w +"px; height: "+ h + "px;"
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню