您发布的示例使用 CSS 变换矩阵来更改背景层的位置。图片必须居中,这样你就不能通过改变背景图片的左右位置来移动它。
您应该显示一个绝对位置的图层,该图层以边距覆盖屏幕,但 z-index 较低以用作背景。在鼠标移动层的位置与 css 变换属性。
var maxMove = 10;
var d = $(window);
var bg = $("#bg");
bg.width(d.width()+maxMove*2).height(d.height()+maxMove*2).css('top','-' + maxMove + 'px').css('left','-' + maxMove + 'px');
$(window).mouseleave(function(){
//bg.css('transform','matrix(1, 0, 0, 1, 0, 0)');
});
$(document).mousemove(function(event) {
var xPos = event.pageX;
var yPos = event.pageY;
var w = d.width();
var h = d.height();
var xShift = ((w/2 - xPos)/w*2)*maxMove;
var yShift = ((h/2 - yPos)/h*2)*maxMove;
$("#log").text(xShift);
bg.css('transform','matrix(1, 0, 0, 1, ' + xShift + ', ' + yShift + ')');
});
当然不要忘记 CSS:
#bg{
position:absolute;
background:url(http://lorempixel.com/output/city-q-c-1861-1370-1.jpg) center center no-repeat;
z-index:-1;
}
body{
padding:0;
margin:0;
overflow:hidden;
}
查看detailed tutorial 并进行现场演示。
阅读 Css 变换矩阵here