【问题标题】:Do something on Scroll在 Scroll 上做点什么
【发布时间】:2016-06-27 08:26:42
【问题描述】:

如果我想在滚动时为元素设置动画,最好的方法是什么? 因为我注意到它在滚动时有点滞后。 我应该像这样添加课程吗?

$(window).scroll(function() {
   if($(this).scrollTop() > 500) {
     $(".element").addClass("animateElement");
   }
}

或者制作这样的旗帜。

animateFlag = true;

$(window).scroll(function() {
   if($(this).scrollTop() > 500) {
     if(animateFlag) {
         $(".element").addClass("animateElement");
         animateFlag = false;
      }
   }
}

【问题讨论】:

  • addClass without flag 将在您越过阈值点后将animateElement 类添加到您所做的每个滚动的元素中。而通过第二种方法,该类只会被添加一次。

标签: javascript jquery html performance scroll


【解决方案1】:

在滚动上制作动画的最佳方法是制作最优化的代码。例如,您可以使用带有您描述的标志的 Vanilla JS,并在滚动之前查询元素,这将导致如下结果:

var animateFlag = true
var element = document.querySelector(".element")

window.addEventListener("scroll", function() {
  if(this.pageYOffset > 0) {
    if(animateFlag) {
      element.classList.add("animateElement");
      animateFlag = false;
    }
  }
})
.element {
  background: yellow;
  width: 200px;
  height: 200px;
  margin-bottom: 1000px;
}

.element.animateElement {
  background: red;
}
<div class="element"></div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 2021-03-25
    • 1970-01-01
    • 2016-09-06
    • 2018-12-05
    相关资源
    最近更新 更多