Il concetto di base per questo è stato pubblicato da Linus Gudn Jokela, che ha cancellato la sua risposta, e non l'ha ripristinato nonostante la mia richiesta.
È possibile utilizzare un involucro interno ruotato per il contenuto, quindi collegare le maniglie di ridimensionamento all'elemento esterno, che rimane non ruotato.
Alcuni codici JS saranno necessari per mantenere il contenuto sincronizzato con il contenitore per quanto riguarda altezza e larghezza. Qui è una dimostrazione completa: 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>
fonte
2013-02-26 21:30:03
T Hat è una soluzione piuttosto ingegnosa. Un piccolo bug con esso è che ogni volta che ridimensionate il div, salta un pochino verso l'alto e verso sinistra a meno che non sia contro il suo bordo dell'elemento genitore. Puoi vedere questo se riduci il div sul suo lato superiore/sinistro e poi ridimensionalo da qualsiasi lato. – ajp15243
@ ajp15243 In che browser stai provando? Non riesco a riprodurlo in FF (anche se forse sto solo fraintendendo come riprodurre il problema) –
Dovrebbe essere l'ultimo Chrome stabile (v25.0.1364.97). Sono anche su Linux e occasionalmente vedo piccoli problemi di layout che sospetto siano dovuti a Gnome3, ma di solito non lo vedo su jsFiddle. Per spiegarti meglio, riproducilo, afferra la maniglia superiore e trascina verso il basso, quindi afferra la maniglia sinistra e trascina a destra. Quindi, senza trascinare troppo, afferrare e spostare leggermente la maniglia destra o inferiore mentre si guarda la posizione della scatola (più semplice da vedere se si guarda l'angolo in alto a sinistra). – ajp15243