javascript - 当页面滚动到该部分时触发一个js动画

标签 javascript html css

我正在使用 rendro (https://rendro.github.io/easy-pie-chart/) 的简单饼图插件。基本上我只希望动画仅在我滚动到显示图表的页面上的特定区域时发生。我怎样才能做到这一点?

最佳答案

请考虑使用 Intersection Observer .

The Intersection Observer API provides a way to asynchronously observe changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.

优点:

  • 无需添加滚动监听、去抖功能。
  • 代码更清晰、更小。

缺点:

  • Safari 缺少支持,因此您需要添加 polyfill .

function handler(entries, observer) {
  for (entry of entries) {
    if (entry.isIntersecting) {
      entry.target.classList.add('inView');
    }
  }
}
let observer = new IntersectionObserver(handler);
observer.observe(document.querySelector(".takeAction"));
.takeAction {
  background-color: #fff;
  transition: 3s background-color;
}

.takeAction.inView {
  background-color: yellow;
}
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia nisi laborum consequuntur quis architecto ullam cupiditate ipsam repellendus quos magnam a recusandae, tenetur veniam eos praesentium iure optio dicta, ex.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia nisi laborum consequuntur quis architecto ullam cupiditate ipsam repellendus quos magnam a recusandae, tenetur veniam eos praesentium iure optio dicta, ex.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia nisi laborum consequuntur quis architecto ullam cupiditate ipsam repellendus quos magnam a recusandae, tenetur veniam eos praesentium iure optio dicta, ex.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia nisi laborum consequuntur quis architecto ullam cupiditate ipsam repellendus quos magnam a recusandae, tenetur veniam eos praesentium iure optio dicta, ex.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia nisi laborum consequuntur quis architecto ullam cupiditate ipsam repellendus quos magnam a recusandae, tenetur veniam eos praesentium iure optio dicta, ex.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia nisi laborum consequuntur quis architecto ullam cupiditate ipsam repellendus quos magnam a recusandae, tenetur veniam eos praesentium iure optio dicta, ex.</p>
<p class="takeAction">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia nisi laborum consequuntur quis architecto ullam cupiditate ipsam repellendus quos magnam a recusandae, tenetur veniam eos praesentium iure optio dicta, ex.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia nisi laborum consequuntur quis architecto ullam cupiditate ipsam repellendus quos magnam a recusandae, tenetur veniam eos praesentium iure optio dicta, ex.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Mollitia nisi laborum consequuntur quis architecto ullam cupiditate ipsam repellendus quos magnam a recusandae, tenetur veniam eos praesentium iure optio dicta, ex.</p>

http://jsfiddle.net/30unpcLm/2/

关于javascript - 当页面滚动到该部分时触发一个js动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54164317/

相关文章:

javascript - API AJAX 获取请求

javascript - 变量不断更新,没有任何代码表明

html - 我的 ASP.NET 桌面网站布局无法在移动设备上正确显示

css - IE 8 不透明度影响所有子元素

javascript - JSDoc : @typedef {Object} . 。如何在 @typedef 处记录对象内部的方法

javascript - 在页面上下文中的控制台日志之间在 PhantomJS 中等待一段时间

html - 带 <fieldset> 的框阴影 CSS。 Firefox 与 Chrome

javascript - 最小化 HTML 内容

css - bootstrap 已排队但 normalize.less 未显示

javascript - Ajaxurl 返回 0