我正在尝试为页面中的背景图像添加平移效果,图像非常大,1800 x 1067,所以基本上会比窗口大我只想在鼠标到达窗口末尾时向各个方向平移背景,我找到了一个可以平移的 Javascript 代码,但只能水平平移,尝试使用它来实现垂直平移。没用。
以下是JSFiddle上的代码:http://jsfiddle.net/v662t/
//.HTML
<div id="pageBg">
</div>
//.CSS
#pageBg {
background: url(images/pageBg.jpg) no-repeat 0 0 scroll;
background-size: cover;
height: auto;
left: 0;
min-height: 768px;
min-width: 1024px;
overflow: hidden;
position: fixed;
top: 0;
width: 100%;
}
Javascript
$(document).ready(function(){
$('#pageBg').mousemove(function(e){
var mousePosX = (e.pageX/$(window).width())*100;
$('#pageBg').css('background-position-x', mousePosX +'%');
});
});
删除background-size: cover
并为mousePosY添加几行javascript:
var mousePosY = (e.pageY/$(window).height())*100;
$('#pageBg').css('background-position-y', mousePosY +'%');
在这里查看工作小提琴:http://jsfiddle.net/georgedyer/XWnUA/2/
我在这里回答了关于在边缘平移以包含更好的格式的评论。
这取决于您希望边缘平移的确切工作方式。图像是否仅在鼠标在边缘上移动时移动,或者甚至当鼠标不动但悬停在边缘上时移动?
在第一种情况下:您可以使用相同的小提琴代码,只需检查mousePosX
或mousePosY
是<10 还是> 90(或您想要定义为边缘的任何百分比)。如果是这样,则不是将图像移动到窗口的某个百分比,而是将其移动到边缘的百分比。
由于这可能最终有点过于敏感,因此您可以选择悬停移动的替代方案,在这种情况下,您将使用mouseEnter
和mouseLeave
事件,只需在mouseEnter
(使用var interval = setInterval(moveImage,250);
)开始一个间隔,将背景图像移动一个像素,然后在mouseLeave
上清除该间隔(clearInterval(interval);
)。
我会留给你自己编辑小提琴,看看你是否可以让它按照你想要的方式工作。