Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 平滑鼠标位置后的移动效果_Javascript_Jquery_Css_Math - Fatal编程技术网

Javascript 平滑鼠标位置后的移动效果

Javascript 平滑鼠标位置后的移动效果,javascript,jquery,css,math,Javascript,Jquery,Css,Math,我想创建一个非常简单的效果,当鼠标移动时移动背景图像。为此,Im记录鼠标位置并使用它修改css属性: $('#landing-content').mousemove(function(e){ var amountMovedX = (e.pageX * -1 / 6); var amountMovedY = (e.pageY * -1 / 6); $(this).css('background-position', amountMovedX + 'px ' + amount

我想创建一个非常简单的效果,当鼠标移动时移动背景图像。为此,Im记录鼠标位置并使用它修改css属性:

$('#landing-content').mousemove(function(e){
    var amountMovedX = (e.pageX * -1 / 6);
    var amountMovedY = (e.pageY * -1 / 6);
    $(this).css('background-position', amountMovedX + 'px ' + amountMovedY + 'px');
}); 
我想让背景运动不那么有攻击性,首先我想,让我们增加等式中的分割因子,以使较大的鼠标位置降低:

这种方法的主要问题是,背景确实移动较慢,但也非常不稳定,请缓慢移动鼠标。因为我们现在是除以100而不是6,所以在打开控制台并查看结果的几个像素移动后,结果的非小数部分会发生变化。由于“背景位置”仅将非十进制值视为正确值,因此运动不是流体

我想我有两种方法来解决这个问题,平滑移动之间的过渡,或者有一个不同的方程将鼠标位置转换为背景的不同位置,但我不知道如何解决它

问题的第二部分是防止背景移动超过背景大小:


你喜欢这个工作吗

我只是将除数减少了一半,并增加了背景图像的大小以说明移动,并在主体上应用边距:0来隐藏小提琴中的空白


仍然会有起伏,试着在图像顶部非常缓慢地移动鼠标,你会得到我的意思是你可以进行一个过渡,使其更加平滑:
$('#landing-content').mousemove(function(e){
    var amountMovedX = (e.pageX * -1 / 50);
    var amountMovedY = (e.pageY * -1 / 50);
    $(this).css('background-position', amountMovedX + 'px ' + amountMovedY + 'px');
    console.log(amountMovedX);
});



body {
  margin:0px;
}
#landing-content {
  overflow: hidden;
  background-image: url(http://i.imgur.com/F2FPRMd.jpg);
  width: 100%;
  background-size: 115%;
  background-repeat: no-repeat;
  max-height: 500px;
  border-bottom: solid;
  border-bottom-color: #628027;
  border-bottom-width: 5px;
  padding:0px;
}