Sto utilizzando l'interfaccia utente di JQuery per implementare elementi ridimensionabili/trascinabili. Ora vorrei definire un contenimento per questi elementi che limita il ridimensionamento/trascinamento su esattamente tre (!) Lati. Per esempio. dai un'occhiata a questo JSFiddle example. Puoi vedere che l'elemento contenuto può essere ridimensionato/trascinato solo all'interno dell'area del genitore.JQuery UI trascinabile: Superamento del contenimento da un lato
Quello che vorrei ottenere è che l'elemento può superare la soglia inferiore e spostarsi oltre il bordo inferiore del genitore. Tuttavia il ridimensionamento/trascinamento dovrebbe essere limitato ai lati superiore, destro e sinistro come prescritto dai confini del genitore.
Così this modification è ciò che mi si avvicinò con:
// 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");
}
}
Se si gioca in giro con il bordo inferiore si nota che l'area del genitore viene espansa se il bambino si avvicina troppo al bordo inferiore del genitore. Sfortunatamente questo si ferma dopo 20 pixel. Dovrai quindi rilasciare il pulsante del mouse e ridimensionarlo/trascinarlo di nuovo per estendere ulteriormente l'area. Hai qualche idea del perché?
Senza aver testato il codice o niente , Ho notato la seguente riga: 'if (parentElBottom <= dragElBottom + 20) {' forse che '20' sta causando il problema? –
Bene, sì, è possibile spostare l'elemento nella posizione più bassa possibile che faceva parte dell'area del genitore all'inizio del movimento. Quindi l'estensione dell'area in qualche modo non viene inoltrata al modello di JQuery UI, immagino. – Bastian