gpt4 book ai didi

jquery - 鼠标悬停背景移动

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

当鼠标悬停在 div 上时,我试图获得细微的移动。

然而,其中微妙的部分并没有完全解决。

只要将鼠标悬停在上面,背景图像就会跳动。

$(document).ready(function() {
var movementStrength = 50;
var height = movementStrength / $(window).height();
var width = movementStrength / $(window).width();
$("#bg").mousemove(function(e){
var pageX = e.pageX - ($(window).width() / 2);
var pageY = e.pageY - ($(window).height() / 2);
var newvalueX = width * pageX * -1 - 25;
var newvalueY = height * pageY * -1 - 50;
$('#bg').css("background-position", newvalueX+"px "+newvalueY+"px");
});
});

https://jsfiddle.net/cjnLtcr0/2/

最佳答案

您可以添加一个带有过渡的类,使用超时等待过渡结束,然后删除该类:

$(document).ready(function() {
var movementStrength = 50;
var height = movementStrength / $(window).height();
var width = movementStrength / $(window).width();
$("#bg").on({
mouseenter: function(e) { // on mouse enter
var pageX = e.pageX - ($(window).width() / 2);
var pageY = e.pageY - ($(window).height() / 2);
var newvalueX = width * pageX * -1 - 25;
var newvalueY = height * pageY * -1 - 50;

$('#bg').addClass('transition'); // add a transition

$('#bg').css({ // move background with transition
"background-position": newvalueX + "px " + newvalueY + "px"
});

setTimeout(function() { // wait .3s
$('#bg').removeClass('transition'); // remove the transition
}, 300);
},

mousemove: function(e) { // on mouse move
var pageX = e.pageX - ($(window).width() / 2);
var pageY = e.pageY - ($(window).height() / 2);
var newvalueX = width * pageX * -1 - 25;
var newvalueY = height * pageY * -1 - 50;

if ($('#bg').hasClass('transition')) { // if there is a transition
//wait for above timeout to remove transition
} else { // else no transition

$('#bg').css({ // move the background without transition
"background-position": newvalueX + "px " + newvalueY + "px"
});
}
}
});
});
#bg {
background: url('http://netsketched.com/pandf/img/sun-rise-clouds.jpg');
background-size: 100% 100%;
width: 250px;
padding: 100px;
}
.transition {
/*class with transition*/
transition: all .3s
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div id="bg">
<h2>Hello, world!</h2>
</div>

Documentation for setTimeout

关于jquery - 鼠标悬停背景移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30135040/

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