Если вы хотите увеличить центр изображения, измените:
left: '-200px',
top: '-200px'
На:
left: '-50%',
top: '-50%'
Вот демоверсия: http://jsfiddle.net/nJ2M8/1/
Обновление
Попробуйте использовать transform
, он способен масштабировать элемент.Вот код, который я написал некоторое время назад, чтобы сделать это:
$(function () {
var venderTransform = ($.browser.webkit) ? 'WebkitTransform' :
($.browser.mozilla) ? 'MozTransform' :
($.browser.msie) ? 'MsTransform' :
($.browser.opera) ? 'OTransform' : 'transform'
$('.square').each(function () {
$.data(this, 'scale', 3);
}).bind('mousewheel', function (event, delta) {
event.preventDefault();
var sc = $.data(this, 'scale');
if ((delta == 1 && sc < 5) || (delta == -1 && sc > 1)) {
sc += delta;
$.data(this, 'scale', sc);
$(this).children('img').css(venderTransform, 'scale(' + sc + ')');
}
}).bind('mousemove', function (event) {
var sc = $.data(this, 'scale') || 1;//scale
if (sc > 1) {
var $this = $(this),
X = (typeof(event.offsetX) == 'undefined') ? (event.pageX - $this.offset().left) : (event.offsetX),//current cursor X position in bullet element
Y = (typeof(event.offsetY) == 'undefined') ? (event.pageY - $this.offset().top) : (event.offsetY),//current cursor Y position in bullet element
w = 400,//width of thumbnail
h = 400,//height of a thumbnail
nX = ((w / 2) - X),//new X
nY = ((h / 2) - Y),//new Y
tf = 'translate(' + (nX * (sc - 1)) + 'px, ' + (nY * (sc - 1)) + 'px) scale(' + sc + ')';//transform string
$this.children('img').css(venderTransform, tf);
}
}).bind('mouseleave', function () {
//reset .has-thumb element on mouseleave
$.data(this, 'scale', 3);
$(this).children('img').css(venderTransform, 'translate(0, 0) scale(1)');
});
});
Вот демонстрация: http://jsfiddle.net/nJ2M8/2/ (масштабирование следует за вашим курсором, и вы можете использовать колесо мыши для увеличениявход / выход)