为了弄清楚我要做什么:

我有一个固定的背景图像,当用户滚动时它应该会略微移动,这已经在起作用。但是,当图像消失时,我希望它再次出现在屏幕的开头。

图像只是一个例子,它将是一个svg,宽度为100%,因此图像一旦离开就必须再次出现在屏幕上:1px。

我怎么做?

这是我的代码

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



    var offset = $("#moving-element").offset();
    $(window).scroll(function(event) {
      var st = $(this).scrollTop();
      $("#moving-element").css("left", st + offset.left);
    });

    body {
      height: 9999px
    }

    #moving-element {
      height: 100px;
      width: 100%;
      background:   url('https://vignette.wikia.nocookie.net/nintendo/images/5/5c/Jumping_Mario_Artwork_-_New_Super_Mario_Bros._Wii.png/revision/latest?cb=20120318204810&path-prefix=en');
     background-repeat: no-repeat;
      background-size: contain;
      background-position: bottom left;
      position: fixed;
      bottom: 0;
    }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="moving-element">
    </div>

最佳答案

通过st%width更新变量st,其中width是div宽度。因此,只要大于div宽度,它就会再次自动重置

var offset = $("#moving-element").offset();
var width = $("#moving-element").width();
$(window).scroll(function(event) {
  var st = $(this).scrollTop();
  st = st%width;
  $("#moving-element").css("left", st + offset.left);
});

关于javascript - 使元素移动,当元素消失在屏幕末端时,使其再次出现在屏幕开头,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49797243/

10-11 13:55