Nick Craver me ha respondido por unos 10 minutos, pero este es mi código para esto, usando background-image
para colocar la imagen en lugar de una imagen real.
var img = $('#outer'),
imgWidth = 1600,
imgHeight = 1200,
eleWidth = img.width(),
eleHeight = img.height(),
offsetX = img.offset().left,
offsetY = img.offset().top,
moveRatioX = imgWidth/eleWidth - 1,
moveRatioY = imgHeight/eleHeight - 1;
img.mousemove(function(e){
var x = imgWidth - ((e.pageX - offsetX) * moveRatioX),
y = imgHeight - ((e.pageY - offsetY) * moveRatioY);
this.style.backgroundPosition = x + 'px ' + y + 'px';
});
La cantidad enorme de variables están allí porque el controlador de eventos mousemove
tiene que ser lo más eficiente posible. Es un poco más restrictivo, porque necesita conocer las dimensiones, pero creo que el código puede modificarse fácilmente para que funcione con img
s, para lo cual se puede calcular fácilmente el tamaño.
Una demostración simple de esta: http://www.jsfiddle.net/yijiang/fq2te/1/
Aparte de la venida lentamente a la parada, no es exactamente igual que el ejemplo. No puedo dejar de describirlo, pero algo está apagado. –
gracias Nick, eso lo solucionó :) – Maikel
@Glenn - no tiene la facilidad, definitivamente es una versión más simplificada, solo estaba mostrando cómo arreglar el código actual :) –