Używam interfejsu użytkownika JQuery do implementowania elementów skalowalnych/przeciągalnych. Teraz chciałbym zdefiniować ograniczenie dla tych elementów, które ograniczają zmianę rozmiaru/przeciągnięcia na dokładnie trzech (!) Stronach. Na przykład. spójrz na to JSFiddle example. Możesz zobaczyć, że zawarty element może być zmieniany/przeciągany tylko wewnątrz obszaru rodzica.JQuery UI przeciągalne: przekroczenie ograniczenia po jednej stronie
Co chciałbym osiągnąć, to że element może przekroczyć dolny próg i zostać przeniesiony poza dolną granicę rodzica. Niemniej jednak zmiana rozmiaru/przeciągania powinna nadal być ograniczona na górnej, prawej i lewej stronie, jak jest to określone przez rodziców zgodnie z granicami.
Więc this modification co wymyśliłem:
// resizable/draggable option
resize/drag : function(event, ui) {
expandParent("#parentElement", "#dragElement");
}
function expandParent(parentName, childName) {
var dragEl = $(childName);
var dragElTop = parseInt(dragEl.css("top"), 10);
var dragElHeight = parseInt(dragEl.css("height"), 10);
var dragElBottom = dragElTop + dragElHeight;
var parentEl = $(parentName);
var parentElBottom = parseInt(parentEl.css("height"));
if(parentElBottom <= dragElBottom + 20) {
parentEl.css("height", "+=2");
}
}
Jeśli bawić się z dolnej granicy można zauważyć, że obszar rodzica jest rozszerzona, jeśli dziecko dostaje zbyt blisko dolnej granicy rodzica. Niestety zatrzymuje się po 20 pikselach. Następnie należy zwolnić przycisk myszy i ponownie zmienić rozmiar/przeciągnąć, aby rozszerzyć obszar dalej. Czy masz jakiś pomysł, dlaczego tak jest?
bez przetestowane kodu lub cokolwiek , Zauważyłem następujący wiersz: 'if (parentElBottom <= dragElBottom + 20) {' może to '20' powoduje problem? –
Cóż, tak, możesz przesunąć element do najniższej możliwej pozycji, która była częścią obszaru rodzica na początku ruchu. Tak więc rozszerzenie obszaru nie jest jakoś przekazane do modelu JQuery UI, jak sądzę. – Bastian