旋转图像瓦特/ jQuery的...但调整大小不工作

旋转图像瓦特/ jQuery的...但调整大小不工作

问题描述:

我有一个图像,需要旋转。此图像面向横向或纵向。旋转图像瓦特/ jQuery的...但调整大小不工作

我有一个HTML5表单来接受每次点击90步的旋转角度。当这个值改变时,图像应该旋转并调整大小。它应该始终是770px宽,但可以像它需要的一样高。

我已经写了下面的事件处理程序,但它没有按我期望的方式工作。

用例:当图像是纵向时,它的初始值是770x1027(w x h)。当旋转90度时,我期望下面的函数旋转图像,设置width = 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,但是因为它现在在它的一边,图像高度就是我们的视觉宽度。混乱?我知道你的感受。 –

+0

所以你只是想缩放,如果'degree%180 == 90'? –

您似乎已切换宽度和高度。

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

如何与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

我完全不明白,您正在获取高度和元素的宽度,并将高度和宽度设置为完全相同的元素上的完全相同的值,那会发生什么变化? – adeneo

+0

哦,现在我明白了,如果你试图保持旋转的图像的方面和位置,我相信它比这更复杂。你应该看看转换原点和rotate()是一个快捷方式的转换矩阵。 – adeneo