jQuery redimensionner des deux côtés

Je vais essayer de le préciser avec des mots: je voudrais savoir s’il existe un moyen avec jQuery-ui-redimensionnable de redimensionner un object sur les 4 côtés en même temps, afin que le centre de Même position.

Voici le bac à sable http://jsfiddle.net/V79Ge/

Donc, c’est un peu comme l’aspectRatio = true, mais si je redimensionne l’object d’un côté, il contrôle les 3 autres côtés

Merci pour vos indices!

Est-ce l’effet que vous recherchez: exemple jsFiddle .

jQuery:

$('#resizeMe').resizable({ aspectRatio: true, resize: function(event, ui) { $(this).css({ 'top': parseInt(ui.position.top, 10) + ((ui.originalSize.height - ui.size.height)) / 2, 'left': parseInt(ui.position.left, 10) + ((ui.originalSize.width - ui.size.width)) / 2 }); } }); 

Edit: code mis à jour et jsFiddle pour utiliser ui.position et ui.originalSize.

Joué un peu avec votre bac à sable et obtenu ceci.

http://jsfiddle.net/V79Ge/17/

 $('#resizeMe').resizable({ aspectRatio: true, resize: function(event, ui) { $(this).offset({ top: (ui.originalSize.height-ui.size.height)/2,left:(ui.originalSize.width-ui.size.width)/2}); } }); 

Que les poignées soient ce dont vous avez besoin?

http://jsfiddle.net/V79Ge/1/

Ensuite, il vous suffira d’append le retour visuel sur les côtés de la boîte.

J’ai fait quelques mises à jour sur l’exemple de j08691. Maintenant, cela fonctionne aussi avec la poignée nord-ouest.

http://jsfiddle.net/j08691/V79Ge/19/

 $('#resizeMe').resizable({ aspectRatio: true, handles: 'all', resize: function(event, ui) { var posTop = parseInt(ui.position.top, 10); var posLeft = parseInt(ui.position.left, 10); var oPosTop = parseInt(ui.originalPosition.top, 10); var pPosLeft = parseInt(ui.originalPosition.left, 10); if(posTop == oPosTop && posLeft == pPosLeft) { $(this).css({ 'top': posTop + ((ui.originalSize.height - ui.size.height)) / 2, 'left': posLeft + ((ui.originalSize.width - ui.size.width)) / 2 }); } else { var width = ui.size.width; var height = ui.size.height; var oWidth = ui.originalSize.width; var oHeight = ui.originalSize.height; $(this).css({ 'width': width + (width - oWidth), 'height': height + (height - oHeight) }); } }}); 

Il a encore besoin de plus de développement. Ne fonctionne pas avec toutes les poignées.

  $(".nodecontainer").each(function () { $(this).parent().attr('style', $(this).attr('style')); $(this).spectrum({ showPalette: true, change: function (color) { $(this).parent().css('background-color', color.toHexSsortingng()); }, palette: [ ['black', 'white', 'blanchedalmond'], ['rgb(255, 128, 0);', 'hsv 100 70 50', 'lightyellow'] ] }) });; $('.nodecontainer').each(function () { $(this).resizable({ alsoResize: $(this).parent(), resize: function (e, ui) { $(this).css("top", 0); $(this).css("left",0); $(this).css("position","relative"); } }); });