Может быть, вам нужно переосмыслить структуру ..
Вы можете вставить элементы .lyr
внутри элемента .resizer
и расположить их внутри него с процентным положением. Таким образом, они будут автоматически изменять размер, пока их контейнер меняет размер. ( плагин не должен обрабатывать их )
демо на http://jsfiddle.net/SrPhA/65/
Обновление после комментария
Чтобы отсоединить элементы resizer
от alsoResize
элементов, вам нужно принять во внимание несколько вещей для расчетов.
- Во-первых, вам нужно использовать начальные размеры / позиции, а не ток элементов, поэтому используйте
start.width
.height
и т. Д.
- для позиционирования вам нужно перевести элемент в начало координат ( в отношении расстояния от
resizer
), масштабировать влево / вверх и затем перевести обратно туда, где они были ..
окончательные расчеты становятся
newElW = start.width * scaleX;
newElH = start.height * scaleY;
newElL = ((start.left - op.left) * scaleX) + op.left;
newElT = ((start.top - op.top ) * scaleY) + op.top ;
Нужно еще немного поработать, чтобы обработать случай, когда вы масштабировали элементы, перетаскивая верхнюю или левую сторону изменяющего размера.
демо на http://jsfiddle.net/gaby/SrPhA/171/
Последнее обновление
для масштабирования во всех направлениях используйте эти помощники.
utils: {
west: function(start, op, scale, delta) {return ((start.left - op.left) * scale) + op.left + delta.left},
east: function(start, op, scale, delta) {return ((start.left - op.left) * scale) + op.left;},
south: function(start, op, scale, delta){return ((start.top - op.top ) * scale) + op.top; },
north: function(start, op, scale, delta){return ((start.top - op.top ) * scale) + op.top + delta.top; }
}
Рабочий пример со всеми обновлениями на http://jsfiddle.net/gaby/SrPhA/324/