繁体   English   中英

为什么我的jquery在滚动动画时需要这么长时间?

[英]Why does my jquery take so long when animating on scroll?

当你滚动10px时我有一个向右滑动100px的盒子,如果滚动小于10px,则滑回到它的默认位置。 这个盒子确实有动画,然而,它有一点延迟。 任何人都可以帮我解决这个问题吗?

HTML

<div id="nest">
  <div id="box">

  </div>
</div>

CSS

#nest {
  width: 95%;
  max-width: 1000px;
  margin: auto;
  background-color: orange;
  height: 1000px;
  padding-top: 150px
}

#box {
  margin: 50px 0px 0px 0px;
  width: 100px;
  height: 100px;
  position:relative;
  background-color: green;
}

jQuery的

jQuery(window).scroll(function() {
  if (jQuery(this).scrollTop() > 10) {
    jQuery('#box').animate({left:'100px'})


  } else {
    jQuery('#box').animate({left:'0px'})
}
});

我的JSFIDDLE链接https://jsfiddle.net/ispykenny/m6ffj83g/1/

在此先感谢您的时间和帮助!

动画花费这么长时间的原因是动画在每个超过10px的滚动事件上运行,这在客户端非常密集。 有几个选项,要么在jQuery中试验.stop()功能,要么编写一个条件if语句来检查动画是否已经启动,只有在没有时才触发。

https://api.jquery.com/stop/

这是一个方便的资源。

var coin = false;

jQuery(window).scroll(function() {
  if (jQuery(this).scrollTop() > 10 && coin === false) {
    jQuery('#box').animate({left:'100px'});
    coin = true;
  } else if (coin === true && jQuery(this).scrollTop() <= 10) {
    jQuery('#box').animate({left:'0px'});
    coin = false;
}
});

尝试这个!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM