Изменение размера области, которую я нажимаю

Я хотел бы знать, возможно ли изменить размер содержимого из области, на которую я нажимаю, вместо изменения размера по умолчанию в левом верхнем углу.

Например, вот мой код http://jsfiddle.net/2drYk/29/

var $cont = $('.container .content'),
    init_size = $cont.width()*0.1,
    ratio = $cont.width() / $cont.height(),
    c =0,
    s = [400,init_size];

$cont.height( init_size );

$cont.click(function(){   
    $(this).stop().animate({height: s[c%2], width: s[c%2] * ratio });
    c++;
});

как вы можете видеть, он изменяется от верхнего левого угла к нижнему правому. Можно ли установить точку начала изменения размера в зависимости от того, где я нажимаю?


person Oreki Houtarou    schedule 17.03.2013    source источник
comment
вам нужно получить местоположение клика. взгляните на этот stackoverflow.com/questions/55677/   -  person btevfik    schedule 17.03.2013
comment
это кажется нетривиальной вещью.   -  person btevfik    schedule 17.03.2013
comment
Использование d3 было бы хорошей библиотекой для всего, что вы хотите сделать, и вам не нужно было бы кодировать все это поведение. самим собой.   -  person Andrew Mao    schedule 17.03.2013
comment
@btevfik Я не очень хорошо знаком с холстом, я думаю, мне следует заменить им свои фигуры?   -  person Oreki Houtarou    schedule 17.03.2013
comment
@Эндрю Мао Спасибо! Я собираюсь попробовать.   -  person Oreki Houtarou    schedule 17.03.2013
comment
если честно я тоже с ним знаком. так что я не могу вам помочь. но это было первое, что пришло мне в голову, когда вы сказали «в зависимости от того, где я нажму». вы можете попробовать то, что предложил Эндрю.   -  person btevfik    schedule 17.03.2013


Ответы (1)


Да, при изменении размера перемещайте изображение в правильном соотношении, чтобы точка на большем изображении была той же относительной точкой, что и местонахождение события щелчка. По сути, это означает перемещение его в отрицательную верхнюю часть и влево в соответствии с соотношением. Расчет размещения изображения при нажатии:

New position = Mouse click event position-New size/Old Size*Mouse click event position 

Вот пример jsfiddle.

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

person OpherV    schedule 17.03.2013