javascript - Javascript 中的视差问题

标签 javascript jquery html css

我正在创建一种视差效果,其中图像和文本的移动方向与鼠标的移动方向相反。这发生在一个名为 parallax-wrapper 的元素中。但是当我移出元素时,我希望图像和文本返回到它们的原始位置。我试图检测元素外的鼠标位置,但由于某种原因它无法正常触发。

codepen 链接是 - https://codepen.io/rohitgd/pen/gRLNad?editors=1010

HTML

<div class="parallax-wrapper">
    <div class="layer" data-mouse-parallax="0.1">
    <img src="https://tympanus.net/Development/MorphingBackgroundShapes/img/1.jpg"/>
  </div>
    <div class="layer" data-mouse-parallax="0.3">REVERT</div>
</div>

CSS

    body {
        background-color:#fff;
        padding: 100px;
    display: flex;
    justify-content: center;
    align-items: center;
    }


    .parallax-wrapper {
        width: 500px;
        height: 300px;
        background-color:#0c0c0c;
        position: relative;
        overflow: hidden;

        .layer {
            width: 80%;
            height: 80%;
            position: absolute;
      left: 30px;
            text-align: center;
            line-height: 300px;
            font-size: 38px;
            color:#FFF;
            transition: all 200ms ease-out;
        }

    }

img {
  width: 200px;
  height: 200px;
  position: relative;
  top: 50px;
  right: 70px;
}

Javascript

$(".parallax-wrapper").mousemove(function(e) {
  var x = e.pageX - $(this).offset().left - $(this).width() / 2;
  var y = e.pageY - $(this).offset().top - $(this).height() / 2;

  $("*[data-mouse-parallax]").each(function() {
    var factor = parseFloat($(this).data("mouse-parallax"));
    x = -x * factor;
    y = -y * factor;

    $(this).css({ transform: "translate3d( " + x + "px, " + y + "px, 0 )" });
  });
});

$(document).mouseleave(function(e) {
    var target = $(e.target);

    if( !target.is("div.layer")) {
      alert('out of the element');
      e.stopPropagation();


    }
});

我想要的是当鼠标在视差包装器之外时,图像和文本返回到它们的原始位置。

最佳答案

当您的鼠标离开时,您并没有重置转换。您需要在有警报的地方添加它...

$(".parallax-wrapper").mouseleave(function(e) {
  $("*[data-mouse-parallax]").each(function() {
    $(this).css({ transform: "translate3d( 0, 0, 0 )" });
  });
});

请注意 mouseleave鼠标离开时触发事件 .parallax-wrapper , 不是 document和以前一样。

这是一个修改过的codepen...

https://codepen.io/anon/pen/ZyBgYJ

关于javascript - Javascript 中的视差问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44591401/

相关文章:

javascript - 如何使分页 "Next"按钮在数据表中看起来不被禁用

html - IE 中的网站图标问题

html - 在grails中显示blob文本

javascript - 带有nodejs axios和vanilla javascript中的异步等待模式的数组文件下载器

javascript - 通过控制台替换脚本 URL

javascript - 对 jquery 中的 303 状态代码使用react(防止重定向)

仅在第二次尝试时才进行 JavaScript 重定向

javascript - 如果字符串中只有一个单词或没有空格,则使用 jQuery/Javascript 分割字符串时出现问题

javascript - 表数据在实时搜索时消失

javascript - jquery项目如何做代码覆盖率测试