Tôi đang sử dụng giao diện người dùng JQuery để triển khai các yếu tố có thể thay đổi kích thước/có thể kéo. Bây giờ tôi muốn xác định một ngăn chặn cho các yếu tố này giới hạn việc thay đổi kích thước/kéo trên chính xác ba (!) Bên. Ví dụ. xem cái này JSFiddle example. Bạn có thể thấy rằng phần tử được chứa chỉ có thể được thay đổi kích cỡ/kéo vào bên trong vùng của cha mẹ.Giao diện người dùng JQuery có thể kéo được: Vượt quá ngăn chặn ở một bên
Điều tôi muốn đạt được là phần tử có thể vượt quá ngưỡng dưới cùng và được di chuyển ra ngoài đường viền dưới cùng của phụ huynh. Tuy nhiên việc thay đổi kích thước/kéo vẫn nên được giới hạn ở phía trên, bên phải và bên trái như được quy định bởi các đường viền của cha mẹ.
Vì vậy this modification là những gì tôi đã đưa ra:
// 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");
}
}
Nếu bạn chơi xung quanh với biên giới phía dưới bạn nhận thấy rằng khu vực này của cha mẹ được mở rộng nếu đứa trẻ trở nên quá gần với biên giới phía dưới của phụ huynh. Thật không may, điều này dừng lại sau 20 pixel. Sau đó, bạn phải nhả nút chuột và thay đổi kích thước/kéo một lần nữa để mở rộng vùng xa hơn. Bạn có bất kỳ ý tưởng tại sao đó là?
mà không cần phải kiểm tra mã hoặc bất cứ điều gì bạn , Tôi nhận thấy dòng sau: 'if (parentElBottom <= dragElBottom + 20) {' có thể '20' đang gây ra sự cố? –
Vâng, vâng, bạn có thể di chuyển phần tử đến vị trí thấp nhất có thể là một phần của khu vực của cha mẹ khi bắt đầu chuyển động. Vì vậy, phần mở rộng của khu vực bằng cách nào đó không được chuyển tiếp đến mô hình của JQuery UI tôi đoán. – Bastian