Вот мое решение, и рабочий пример выглядит следующим образом:
https://codebrace.com/editor/b1169cb27
В этом решении я добавил transition
для анимации (для достижения плавного масштабирования) и transform
для достижения масштабирования в CSS. Теперь, чтобы сфокусировать «цель увеличения», я написал следующий jquery:
$(document).ready(function() {
var wrapper = $(".wrapper");
position = wrapper.offset();
$('.zoomTarget').click(function (e) {
wrapper.toggleClass("wrapperzoom");
var lx = e.currentTarget.offsetLeft,
ly = e.currentTarget.offsetTop;
if(wrapper.hasClass("wrapperzoom")){
//where 3 represent the amount of scaling value used in css
wrapper.offset({ top: (position.top - ly)*3, left: (position.left - lx)*3});
}else{
wrapper.css({ top: "auto", left: "auto"});
}
});
});