gpt4 book ai didi

javascript - 鼠标离开 div 后将图像动画到原始位置

转载 作者:行者123 更新时间:2023-11-28 05:46:11 25 4
gpt4 key购买 nike

我正在使用的 JS 脚本通过鼠标悬停在一些图像上创建视差效果。鼠标离开悬停区域后,图像将保留在最后一个位置,直到用户重新进入悬停区域 - 这会导致图像捕捉到新的鼠标位置。

我一直在尝试修改脚本以在原点位置启动图像,然后在检测到鼠标悬停时平滑地动画到鼠标位置,离开后再次返回原点。我对任何疯狂的解决方案持开放态度,我也尝试过利用 CSS 动画但无济于事。

JS:

$(document).ready(function ( $ ) {
$.fn.extend({

mouseParallax: function(options) {

var defaults = { moveFactor: 5, zIndexValue: "-1", targetContainer: 'body' };

var options = $.extend(defaults, options);

return this.each(function() {
var o = options;
var background = $(this);

$(o.targetContainer).on('mousemove', function(e){

mouseX = e.pageX;
mouseY = e.pageY;

windowWidth = $(window).width();
windowHeight = $(window).height();

percentX = ((mouseX/windowWidth)*o.moveFactor) - (o.moveFactor/2);
percentY = ((mouseY/windowHeight)*o.moveFactor) - (o.moveFactor/2);

leftString = (0-percentX-o.moveFactor)+"%";
rightString = (0-percentX-o.moveFactor)+"%";
topString = (0-percentY-o.moveFactor)+"%";
bottomString = (0-percentY-o.moveFactor)+"%";

background[0].style.left = leftString;
background[0].style.right = rightString;
background[0].style.top = topString;
background[0].style.bottom = bottomString;
if(o.zIndexValue) {
background[0].style.zIndex = o.zIndexValue;
}
});
});
}
});

$('#background').mouseParallax({ moveFactor: 5 });
$('#foreground').mouseParallax({ moveFactor: 10 });
$('#fore-foreground').mouseParallax({ moveFactor: 15 });
$('#fore-fore-foreground').mouseParallax({ moveFactor: 20 });

$('body').height(3000);

} (jQuery) );

fiddle :https://jsfiddle.net/zj9djopm/2/

最佳答案

与其简单地让它们卡入到位,不如尝试利用 jQuery 为您提供的 .animate 属性。

像这样的东西应该可以工作:

$(o.targetContainer).on('mouseout', function(e){
$(background[0]).animate({
left: "0",
right: "0",
top: "0",
bottom: "0"
});
});

类似地,对于 mouseenter 状态,您必须再次执行相同的操作。

关于javascript - 鼠标离开 div 后将图像动画到原始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com