当我向下滚动它们时,我真的很想在屏幕上制作一些动画,就像它们在这里一样......
https://michalsnik.github.io/aos/
问题是我的网站实际上嵌套在一个名为'main-content'的div中,侧栏和顶栏有单独的div。
从this question and answer看来它不可能在嵌套的滚动条中实现我想要的东西,但这是3年前我只是想知道是否有使用aos或wow.js或类似的潜在解决方法。
我尝试了一对,没有运气,但我觉得必须有办法实现这一目标。
提前致谢!
IntersectionObserver使用vanilla JavaScript轻松实现这一行为。这是一个fairly new API,但有一个polyfill。
如果您想跟踪自己的滚动容器而不是文档,可以将root
设置为其他内容。
// Find the item we want to animate on scroll
var target = document.querySelector('#target');
var targetActiveClass = 'target-is-active';
// Call this function when it enters/leaves the viewport
var callback = function(entries, observer) {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add(targetActiveClass);
} else {
entry.target.classList.remove(targetActiveClass);
}
});
};
// Create our observer
var observer = new IntersectionObserver(callback, {threshold: 0});
observer.observe(target);
/* Our target, hidden by default */
#target {
align-items: center;
background-color: #000;
color: #fff;
display: flex;
justify-content: center;
height: 100px;
margin-bottom: 150vh;
margin-top: 150vh;
opacity: 0;
transform: translateX(-100%);
transition: opacity .25s ease-in-out,
transform .25s ease-in-out;
width: 200px;
}
/* Apply this class when #target enters/leaves the viewport */
#target.target-is-active {
opacity: 1;
transform: none;
}
<p>Scroll!</p>
<div id="target">Howdy!</div>