javascript - 在 Scroll 上做点什么

标签 javascript jquery html performance scroll

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

$(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;
      }
   }
}

最佳答案

为滚动上的内容设置动画的最佳方法是编写最优化的代码。例如,您可以将 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>

关于javascript - 在 Scroll 上做点什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38049119/

相关文章:

javascript - 通过 JavaScript 编辑 HTML 内容的最佳实践

javascript - 扩展视频播放器,例如 CNN 网站,最好基于 jQuery

Javascript 填充输入,但不填充跨度?

javascript - 在 Struts2 的 jsp 中映射表中的行数错误

javascript - sheepit 表单 - 使用 php 显示已保存的表单值

javascript - JQuery 设置 Div 样式 After Effect

html - 电子邮件客户端的 float 替代方案

html - 这是有效的 html 吗?

javascript - 调用 TypeScript 编译器作为 NPM 模块

javascript - 我想在 flowplayer 中为视频添加快进和快退按钮