javascript - 在滚动时淡入淡出,如果内容已经在可视区域中怎么办?
问题描述
我有这段代码可以在滚动网页时淡入/淡出元素。唯一的问题是我页面顶部的内容会淡出,直到您滚动为止。我想在页面加载并淡入第一个可见项目时检查可见区域,我该怎么做?
$(document).on("scroll", function () {
var pageTop = $(document).scrollTop()
var pageBottom = pageTop + $(window).height()
var tags = $("section")
for (var i = 0; i < tags.length; i++) {
var tag = tags[i]
if ($(tag).position().top < pageBottom) {
$(tag).addClass("visible")
} else {
$(tag).removeClass("visible")
}
}
})
section {
opacity: 0;
transform: translate(0, 20px);
transition: all 1s;
}
section.visible {
opacity: 1;
transform: translate(0, 0);
}
解决方案
您可以分别检查页面准备就绪和滚动并调用函数以使该部分可见。(我将 margin-bottom:20px; 添加到 css 部分仅用于演示目的)。运行底部的代码片段以查看它。
$(document).ready(function() {
setVisibility();
});
$(document).on("scroll", function () {
setVisibility();
});
function setVisibility() {
var pageTop = $(document).scrollTop()
var pageBottom = pageTop + $(window).height()
var tags = $("section")
for (var i = 0; i < tags.length; i++) {
var tag = tags[i]
if ($(tag).position().top < pageBottom) {
$(tag).addClass("visible")
} else {
$(tag).removeClass("visible")
}
}
}
section {
opacity: 0;
transform: translate(0, 20px);
transition: all 1s;
margin-bottom:20px;
}
section.visible {
opacity: 1;
transform: translate(0, 0);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section>Lorem ipsum dolor sit amet</section>
<section>Donec convallis aliquam eros.</section>
<section>Morbi ac consectetur enim.</section>
<section>Maecenas mattis vestibulum consectetur.</section>
<section>Quisque vitae aliquam nisl.</section>
<section>Lacinia ut magna vel efficitur.</section>
<section>Vivamus in placerat nibh, eget fringilla arcu.</section>
<section>Mauris id mauris sed odio consequat efficitur</section>
<section>Duis elementum nulla nec mauris suscipit accumsan.</section>
<section>interdum velit id, tempor enim.</section>
<section>Duis iaculis consequat massa.</section>
<section>In vel risus id sem finibus consectetur</section>
推荐阅读
- javascript - 减少 .parent 和 .children 调用以获取所需参数
- php - 如何将功能正常的图像上传按钮添加到现有表单?
- c++ - 为什么我们应该通过 pthread_setspecific 将键绑定到内存块,而不是只保留指向该块的指针?
- heroku - 为什么在部署到 Heroku 时出现“应用程序错误”?(MERN 应用程序)
- ios - 在表格视图单元格和视图控制器之间传递数据
- python - Keras Sequential to Functional API
- javascript - 如何同时滚动多个滚动条
- angular - 使用异步管道时如何执行业务逻辑?
- angular - 如何禁用有条件的水平步进器(Angular mat-step)
- unity3d - 在 Unity3D 中,如何阻止编辑器执行卡在错误循环中的编辑器扩展脚本?