【发布时间】:2022-01-06 12:49:50
【问题描述】:
亲爱的小伙伴们好,
我一直在尝试重新创建效果:当鼠标靠近https://www.davidwilliambaum.com/ 上的图像中心时,图像会放大
到目前为止,我一直很不成功,因为我不知道如何解决这个问题。
我用一些想法开始了一个 codepen:https://codepen.io/dindon-studio/pen/RwLwRKM
如您所见,我首先获取图像的中心坐标,然后尝试使用一些肮脏的公式来根据鼠标距离将其放大。 但它非常有缺陷,根本没有说服力。
有人有更好的方法吗? 非常感谢您的帮助!
var mX, mY, distance, element
element = $('.project')
function calculateDistance(elem, mouseX, mouseY) {
return Math.floor(Math.sqrt(Math.pow(mouseX - (elem.offset().left+(elem.width()/2)), 2) + Math.pow(mouseY - (elem.offset().top+(elem.height()/2)), 2))); }
$(document).mousemove(function(e) {
mX = e.pageX;
mY = e.pageY;
distance = calculateDistance(element, mX, mY);
if (distance< 500 && distance >50){
var scaling = 1 + (1/distance) *100
gsap.to(".project", {duration: 0.01, scale: scaling,ease: "power2.in",});
}
});
【问题讨论】:
-
一个问题是图像中心的位置一直在重新计算——尽管实际上它是固定的。在开始时计算并使用这些值。这停止了“抖动”。我没有提出 sn-p 因为我不知道你想要的比例因子是什么。
-
确保使用
overwrite: true或"auto"来杀死之前的补间。
标签: javascript jquery css frontend gsap