jQuery Resizable: удвоение ширины изменения размера - PullRequest
1 голос
/ 15 ноября 2010

Справка:

Если вы центрируете изменяемый размер элемента и расширяете его влево / вправо, создается иллюзия, что он расширяет только половину движения мыши.

Причина:

Это происходит потому, что объект центрирован.

Вопрос:

Как бы вы увеличили скорость изменения размера объекта по сравнению с движением мыши? Для центрированных элементов я бы хотел, чтобы объект расширялся вдвое больше расстояния до мыши.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2010

Я не знаю, как вы центрируете свой изменяемый размер, но этот контрольный пример хорошо работает для меня.

По сути, я делаю что-то похожее на vol7ron, но я использую на одно задание меньше, и расчёт лучше читается: D просто шутка, выбирай, что тебе больше подходит, больше тебе подходит

ui.size.width += ui.size.width - ui.originalSize.width;
2 голосов
/ 15 ноября 2010

Учитывая центрированный DIV, лучшее, что я могу придумать, - это установить ширину в обратном вызове.

     $('#divID').resizable({
            handles       : 'e,w'
          , resize        : function (event,ui){
                               ui.position.left = ui.originalPosition.left;
                               ui.size.width    = ( ui.size.width
                                                  - ui.originalSize.width )*2
                                                  + ui.originalSize.width;
                            }
     });

Выше просто вычисляется разница между окончательной и исходной шириной и умножается на два, затем добавляет это к исходной ширине.

Я не уверен, что это лучший способ сделать это.Мне, например, это не нравится, так как ширина устанавливается на объекте дважды.Я думаю, что лучшим способом было бы принять какую-то опцию (xRate или X-Step) и (yRate или Y-Step) и включить ее в часть _mouseDrag: функции jQuery.

Чтобы сделать это без редактирования jQuery, я думаю, мне нужно создать плагин, который перезаписывает функцию _mouseDrag изменяемого размера.

Я приму лучшие ответы! :)

...