Я использую пользовательский интерфейс JQuery для реализации изменяемых размеров/перетаскиваемых элементов. Теперь я хотел бы определить ограничение для этих элементов, которое ограничивает изменение размера/перетаскивание на ровно три (!) Стороны. Например. посмотрите на это JSFiddle example. Вы можете видеть, что содержащийся элемент можно изменить или изменить только внутри родительской области.JQuery UI draggable: Превышение сдерживания на одной стороне
То, что я хотел бы достичь, состоит в том, что элемент может превышать нижний порог и перемещаться за пределы нижней границы родителя. Тем не менее изменение размера/перетаскивания по-прежнему ограничено в верхней, правой и левой сторонах, как это предусмотрено родительскими границами.
Так this modification то, что я придумал:
// 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");
}
}
Если вы поиграйте с нижней границей вы заметили, что область родителя расширяются, если ребенок получает слишком близко к нижней границе родителя. К сожалению, это останавливается после 20 пикселей. Затем вам нужно отпустить кнопку мыши и изменить размер/перетащить еще раз, чтобы расширить область дальше. У вас есть идея, почему это так?
Без испытав код или что-нибудь , Я заметил следующую строку: 'if (parentElBottom <= dragElBottom + 20) {' может быть, что '20' вызывает проблему? –
Ну, да, вы можете переместить элемент в самое низкое возможное положение, которое было частью родительской области в начале движения. Поэтому расширение области каким-то образом не перенаправляется на модель JQuery UI, я думаю. – Bastian