Używam jQuery UI do utworzenia przeciągalnego <div>
. <div>
jest absolutnie przygotowani do prawej dolnej lub górnej lewej wykorzystaniem CSS:jQuery UI draggable z bezwzględną pozycją i dolną właściwością
.dragbox {
position: absolute;
width: 140px;
min-height: 140px; /* I need to use min-height */
border: 3px solid black;
padding: 10px;
}
.bottom {
bottom: 5px; /* causes box to resize when dragged */
right: 5px;
}
.top {
top: 5px; /* does not cause box to resize */
left: 5px;
}
HTML wygląda następująco:
<div class="dragbox bottom">
Bottom Box :(
</div>
<div class="dragbox top">
Top Box :)
</div>
Kod JavaScript jest $('.dragbox').draggable();
aby uczynić <div>
elementy przeciągany. Górny lewy <div>
działa zgodnie z oczekiwaniami, ale prawy dolny <div>
zmienia rozmiar po przeciągnięciu. Jeśli zmieniam poperty min-height
z .dragbox
na height
widzę oczekiwane zachowanie dla obu pól, ale muszę użyć do tego celu min-height
, ponieważ nie znam długości wewnętrznej zawartości.
Jak ustawić pozycję <div>
w prawym dolnym rogu i włączyć przeciąganie bez zmiany rozmiaru po przeciągnięciu? Elementy lewego górnego i dolnego prawego rogu powinny zachowywać się w ten sam sposób.
DEMO (używam Chrome 27 i Safari 6) można przeciągać prace
Stosując tę ideę udało mi się rozwiązać mój przypadek, w którym oprócz skrzynka ma dynamiczny wzrost (i powinien rosnąć w górę), ale na szczęście nie zmienia się podczas przeciągania. Robię to samo, ale używając opcji "start" i "stop", tak aby ustawić górny atrybut jako zakotwiczenie (auto-ing bottom) po rozpoczęciu przeciągania i zamienić je z powrotem po jego zakończeniu. – DonSteep