Jedynym rozwiązaniem, które znalazłem, jest ustawienie maksymalnej i minimalnej wysokości lub szerokości z bieżącą wartością.
Przykład:
foo.resizable({
maxHeight: foo.height(),
minHeight: foo.height()
});
Ale to jest naprawdę brzydkie, zwłaszcza jeśli muszę programowo zmienić wysokość elementu.
Podczas gdy plakat prosił głównie o zmianę rozmiaru tylko w poziomie, pytanie dotyczy również pionu.
Przypadek pionowy ma specjalny problem: być może ustawiłeś względną szerokość (np. 50%), którą chcesz zachować nawet po zmianie rozmiaru okna przeglądarki. Jednak interfejs użytkownika jQuery ustawia bezwzględną szerokość w pikselach po pierwszej zmianie rozmiaru elementu i utrata względnej szerokości.
Jeśli znajdziesz następujący kod do pracy w tym przypadku użycia:
$("#resizable").resizable({ handles: 's', stop: function(event, ui) { $(this).css("width", ''); } });
Zobacz także http://jsfiddle.net/cburgmer/wExtX/ i jQuery UI resizable: automatyczna wysokość przy użyciu samego wschodniego uchwytu
źródło
px
.height
''
resize
stop
Bardzo proste rozwiązanie:
$( ".selector" ).resizable({ grid: [1, 10000] }); // horizontal $( ".selector" ).resizable({ grid: [10000, 1] }); // vertical
Działa to również dla draggable (). Przykład: http://jsfiddle.net/xCepm/
źródło
{handles: 'se', grid: [10000, 1], autoHide: true}
Rozwiązaniem jest skonfigurowanie skalowalnego rozmiaru, aby anulował zmiany wymiaru, którego nie chcesz.
oto przykład zmiany rozmiaru tylko w pionie:
foo.resizable({ resize: function(event, ui) { ui.size.width = ui.originalSize.width; } });
źródło
Chciałem zezwolić na zmianę rozmiaru, gdy przeglądarka zmienia rozmiar, ale nie wtedy, gdy użytkownik zmienia rozmiar elementu, to działało dobrze:
foo.first().resizable({ resize: function(event, ui) { ui.element.css('width','auto'); }, });
źródło
Dla mnie rozwiązania z dwoma uchwytami i uchwytem
resize
działały dobrze, więc użytkownik widzi uchwyt, ale może zmienić rozmiar tylko w poziomie, podobne rozwiązanie powinno działać dla pionu. Bez obsługi w prawym dolnym rogu użytkownik może nie wiedzieć , że może zmienić rozmiar elementu.Podczas używania
ui.size.height = ui.originalSize.height;
nie będzie działać poprawnie, jeśli element zmienił swój rozmiar ze stanu początkowego.foo.resizable({ // Handles left right and bottom right corner handles: 'e, w, se', // Remove height style resize: function(event, ui) { $(this).css("height", ''); } });
Aby uzyskać lepszą wydajność,
$(this)
można usunąć:var foo = jQuery('#foo'); foo.resizable({ // Handles left right and bottom right corner handles: 'e, w, se', // Remove height style resize: function(event, ui) { foo.css("height", ''); } });
źródło
Successfully working div position Vertically and horizontally ------------------------------------------------------------- <head> <style> .resizable { height: 100px; width: 500px; background: #09C; } .resizable-x { height: 100px; width: 500px; background: #F60; } </style> <script> $(function() { $( ".resizable" ).resizable({ grid: [10000, 1] }); $( ".resizable-x " ).resizable({ grid: [1, 10000] }); $( ".resizable" ).draggable(); }); }); </script>`enter code here` </head> <body> <div class="resizable"></div> <div class="resizable-x"></div> </body>
źródło