【问题标题】:Panning a background image in all directions on mouseover using Javascript使用 Javascript 在鼠标悬停时向各个方向平移背景图像
【发布时间】:2013-01-07 11:24:24
【问题描述】:

我正在尝试为页面中的背景图像添加平移效果,图像非常大 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 +'%');
   }); 
});

【问题讨论】:

  • 你能在 jsfiddle 中模拟一下这个问题吗? jsfiddle.net

标签: javascript html panning


【解决方案1】:

删除 background-size: cover 并为 mousePosY 添加一些 javascript 行:

var mousePosY = (e.pageY/$(window).height())*100;
$('#pageBg').css('background-position-y', mousePosY +'%');

在这里查看工作小提琴:http://jsfiddle.net/georgedyer/XWnUA/2/

【讨论】:

  • 太棒了!谢谢。我还有一个问题:我怎样才能让它只在它到达边缘时才平移(比如窗口的最后 50 像素)?
  • 查看我在边缘平移的其他答案。
  • 香草JS怎么样?问题不是说 Jquery,而是说 Javascript
【解决方案2】:

我在这里回答有关在边缘平移以包括更好的格式的评论。

这取决于您希望在边缘平移的确切方式。只有当鼠标在边缘移动时,图像才会移动,或者即使鼠标静止但悬停在边缘上时,图像也会移动吗?

在第一种情况下:您可以使用相同的小提琴代码,然后检查 mousePosXmousePosY 是否 90(或您想要定义为边缘的任何百分比)。如果是这样,那么不是将图像移动到窗口的百分比,而是将其移动到边缘的百分比。

因为这最终可能有点过于敏感,所以你可以选择只在悬停上移动,在这种情况下,你可以使用 mouseEntermouseLeave 事件,然后在 @ 上开始一个间隔987654327@(使用var interval = setInterval(moveImage,250);)将背景图像移动一个像素,然后在mouseLeave 上清除该间隔(clearInterval(interval);)。

我会留给你自己编辑the fiddle,看看你能不能让它按照你想要的方式工作。

【讨论】:

  • 我通过检查 mousePosX 或 mousePosY 是 90 来尝试选项 1。但似乎图像在跳跃。我不能用更平滑的过渡来做到这一点,比如将图像从它的位置平移到它的边缘吗?
  • 我为方法#2做了一个小提琴,我更喜欢它:jsfiddle.net/georgedyer/RRPsa ...您可以使用变量scrollSpeed设置滚动灵敏度/速度
  • 如何在我原来的平移示例中添加滚动速度?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多