javascript - mousemove parallax 仅轻微移动而不是鼠标位置

标签 javascript jquery css offset mousemove

我希望当鼠标点击英雄面板区域时,飞机和火箭仅从其原始位置移动约 5%。

当前代码使图像跟随和偏移鼠标位置。

请协助。

$(document).ready(function () {
    $('#hero-panel').mousemove(function (e) {
        parallax(e, document.getElementById('plane'), 1);
        parallax(e, document.getElementById('rocket'), 2);
    });
});

function parallax(e, target, layer) {
    var layer_coeff = 10 / layer;
    var x = ($(window).width() - target.offsetWidth) / 4 - (e.pageX - ($(window).width() / 4)) / layer_coeff;
    var y = ($(window).height() - target.offsetHeight) / 4 - (e.pageY - ($(window).height() / 4)) / layer_coeff;
    $(target).offset({ top: y ,left : x });
};

https://jsfiddle.net/jc0807/c5yke2on/

谢谢

最佳答案

好的,我想我明白你在找什么: fiddle

$(document).ready(function () {
    var plane = document.getElementById('plane');
    var rocket = document.getElementById('rocket');
    plane.homePos = { x: plane.offsetLeft, y: plane.offsetTop };
    rocket.homePos = { x: rocket.offsetLeft, y: rocket.offsetTop };

    $('#hero-panel').mousemove(function (e) {
        parallax(e, document.getElementById('plane'), 10);
        parallax(e, document.getElementById('rocket'), 20);
    });
});

function parallax(e, target, layer) {
    var x = target.homePos.x - (e.pageX - target.homePos.x) / layer;
    var y = target.homePos.y - (e.pageY - target.homePos.y) / layer;
    $(target).offset({ top: y ,left : x });
};

我们在这里所做的是将飞机和火箭的起始位置记录为飞机和火箭对象上的新属性“homePos”。这使得根据鼠标与对象 homePos 的距离将视差效果应用为与原始位置的偏移变得容易。 如果修改传递给视差的层值,移动量将会改变(我们将鼠标从对象起始位置中间的偏移量除以它,以计算新的对象偏移量)。

关于javascript - mousemove parallax 仅轻微移动而不是鼠标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33950114/

相关文章:

html - 通过使用 Javascript CSS 单击选择时更改颜色

javascript - 悬停时显示特定的向下滚动图标?

css - 在垂直对齐的列表项的左边框之间创建空间

javascript - 从以键/值结构格式化的数组中检索值

javascript - 对以逗号分隔的数字字符串进行排序

javascript - 如何从计算器中删除 document.write()

jquery - 使用 jquery 隐藏/显示表格 CSS 的行

javascript - 加载时加载额外的 html

jQuery 选项卡 - 直接链接到选项卡

javascript - 选中/取消选中所有复选框