javascript - 上下滚动时淡入淡出
问题描述
我想扩展此答案中提供的代码。那里的代码在向下滚动时淡入元素,在向上滚动时淡出图像,但在向下滚动时不会淡出。我想实现所有元素:向下滚动时淡入,元素离开视口时淡出,向上滚动时淡入,元素离开视口时淡出。
解决方案
您可以使用Intersection Observer API来实现所需的结果,jQuery
而不是使用事件侦听器。scroll
您可以根据需要调整threshold
选项。IntersectionObserver
此选项用于指示应执行观察者回调的目标可见性百分比。我已将其设置为 70%。
const observerOptions = {
root: null,
rootMargin: "0px",
threshold: 0.7
};
function observerCallback(entries, observer) {
entries.forEach(entry => {
if (entry.isIntersecting) {
// fade in observed elements that are in view
entry.target.classList.replace('fadeOut', 'fadeIn');
} else {
// fade out observed elements that are not in view
entry.target.classList.replace('fadeIn', 'fadeOut');
}
});
}
const observer = new IntersectionObserver(observerCallback, observerOptions);
const fadeElms = document.querySelectorAll('.fade');
fadeElms.forEach(el => observer.observe(el));
.fade {
margin: 50px;
padding: 50px;
background-color: lightgreen;
transition: opacity 0.7s ease-in;
}
.fadeOut { opacity: 0; }
.fadeIn { opacity: 1; }
<div class="container">
<div class="fade fadeOut">Element 1</div>
<div class="fade fadeOut">Element 2</div>
<div class="fade fadeOut">Element 3</div>
<div class="fade fadeOut">Element 4</div>
<div class="fade fadeOut">Element 5</div>
<div class="fade fadeOut">Element 6</div>
<div class="fade fadeOut">Element 7</div>
<div class="fade fadeOut">Element 8</div>
<div class="fade fadeOut">Element 9</div>
<div class="fade fadeOut">Element 10</div>
</div>
推荐阅读
- python - Selenium xpath unable to locate class
- python - How do I get flask to send a file on form submit?
- c++ - 读取系统内存的权限不足
- python-3.x - 使用 Requests-HTML 仅从父标签中提取文本
- c - 在 cygwin 中运行程序时,意外标记 `(' 附近出现语法错误
- reactjs - Is there anyway to dynamically add a child to a JSX element?
- debugging - Intellij: how to open a library java source and set a breakpoint for debugging?
- java - How to make IntelliJ color preview recognize a custom Color class?
- c# - How to return value of items in Listbox to Textbox
- excel - 如何格式化此 VBA 电子邮件