この基本概念はLinus Gudn Jokelaによって投稿されたもので、彼は回答を削除し、私の要求にもかかわらず復元していません。
回転した内側のラッパーをコンテンツに使用し、サイズ変更ハンドルを外側の要素に取り付けます。外側の要素は回転されません。
高さと幅に関する限り、コンテンツをコンテナーと同期させるために、いくつかの JS コードが必要になります。ここに完全なデモがあります: http://jsfiddle.net/fXthv/
JS:
$('#widget').resizable({
handles: 'n, e, s, w',
resize: function(){
correct(this);
}
});
function correct(el) {
var widget = $('#widget_content'),
deg = widget.data("rotate");
if (typeof deg == "number") {
widget.css({
width: (function () {
if (deg % 180 == 0) return $(el).outerWidth()
else return $(el).outerHeight()
})(),
height: (function () {
if (deg % 180 == 0) return $(el).outerHeight()
else return $(el).outerWidth()
})(),
marginLeft: (function () {
if (deg % 360 == 90) return $(el).outerWidth();
else if (deg % 360 == 180) return $(el).outerWidth();
else return 0;
//else if (deg % 360 == 270) return $(el).outerWidth();
})(),
marginTop: (function () {
if (deg % 360 == 270) return $(el).outerHeight();
else if (deg % 360 == 180) return $(el).outerHeight();
else return 0;
//else if (deg % 360 == 270) return $(el).outerWidth();
})()
});
}
}
CSS:
#widget {
width: 100px;
height: 100px;
background-color: #cecece;
}
#widget_content {
margin-left:100px;
width: 100px;
height: 100px;
background-image: url(http://aux.iconpedia.net/uploads/2106003206.png);
background-size: 100% 100%;
/* removing the styles below will make the image appear as expected */
-webkit-transform-origin: 0 0;
-moz-transform-origin: 0 0;
-ms-transform-origin: 0 0;
-o-transform-origin: 0 0;
transform:rotate(90deg);
-ms-transform:rotate(90deg);
/* IE 9 */
-moz-transform:rotate(90deg);
/* Firefox */
-webkit-transform:rotate(90deg);
/* Safari and Chrome */
-o-transform:rotate(90deg);
/* Opera */
}
HTML:
<div id="widget">
<div id="widget_content"></div>
</div>