2016-09-16 4 views
1

Ich versuche, jQuery Resizable zu verwenden, um das Padding auf einem Element im Wesentlichen zu bearbeiten und habe gekämpft, um diesen bösen Jungen zu arbeiten oder Ressourcen zu finden, die einen Einblick geben könnten.Verwenden Sie jQuery resizable Padding ändern

Ich bin im Wesentlichen dieser Weise die Höhenänderung zu padding Wechsel zur Karte:

$(".block-wrapper").resizable({ 
     handles: "n, s", 
     resize: function(event, ui) { 

      var padding = ((ui.size.height - ui.originalSize.height)/2); 

      ui.element.css({ 
       'height': 'initial', 
       'padding-top': padding+'px', 
       'padding-bottom': padding+'px' 
      }); 

     } 

}); 

(mehr hier: https://jsfiddle.net/6vs37ot0/1/)

Und es funktioniert perfekt das erste Mal, aber wenn Sie zurück zu justieren Es wird wieder auf die ursprüngliche Größe zurückgesetzt, bevor die Größe erneut geändert wird.

Irgendwelche Ideen auf, wie ich in der Lage sein könnte, das zu lösen, wäre FANTASTISCH.

Antwort

0

Ihr Problem ist mit der Linie var padding = ((ui.size.height - ui.originalSize.height)/2);

Wenn Sie den Block zu stoppen Ändern der Größe, das heißt auf mouseup, ui.originalSize.height zur letzten ui.size.height gesetzt, so ui.size.height - ui.originalSize.height ist zurück auf Null und Ihre Polsterung ist weg!

Aber warum gehen Sie die ganze Mühe mit Padding? Wenn es nur Center vertikal der Text ist, gibt es einige einfacher css Lösung.

.block-wrapper { 
    display: flex; 
    justify-content: center; /* align horizontal */ 
    align-items: center; /* align vertical */ 
} 

und die einfacheren js:

jQuery(document).ready(function($){ 
    $(".block-wrapper").resizable({handles: "n, s"}); 
}); 
+0

Dank Gabriel. Die Auffüllung wird gut angewendet, auf mouseup enthalten. Wenn Sie die Größe erneut ändern, wird das Padding gelöscht, als würde der Block von seiner ursprünglichen Größe ausgehen. Ich nehme an, dass die Größe veränderbar ist, wenn man die aktuelle Höhe liest (die natürlich nicht die Auffüllung beinhaltet), die bewirkt, dass sie bei späteren Größenanpassungen zurückschnappt. –

+0

@ JeremyAbraham: Ja, ich stimme zu, die Polsterung ist in Ordnung. Was ich damit meinte, ist, dass der Füllwert, der mit 'ui.size.height' und' ui.originalSize.height' berechnet wird, immer gleich null ist, wenn Sie mit der Größenanpassung beginnen, weil 'originalSize' nicht die erste Größe des Blocks vor einem ist Größe ändern, es ist eher die Größe, kurz bevor Sie die Maus bewegen, nachdem Sie klicken, um zu ziehen. Und was ist mit meiner zweiten Option? Müssen Sie wirklich die Polsterung anpassen? –