javascript - 为什么即使元素不在视口中,我的函数也会添加一个类?
问题描述
我遵循了一些关于其他问题的建议,这些问题是关于如何在滚动时在屏幕上看到元素时向元素添加类。我一直得到相同的结果:当我开始滚动时,即使我的元素不可见,也会添加类。
function isScrolledIntoView(elem) {
var $window = $(window),
docViewTop = $window.scrollTop(),
docViewBottom = docViewTop + $window.height(),
elemTop = $(elem).offset().top ,
elemBottom = elemTop + $(elem).outerHeight();
return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}
$(window).on("scroll", function() {
$('#card1').each(function() {
if (isScrolledIntoView(this)) {
$(this).addClass('cardScroll');
console.log('Class added');
} else {
$(this).removeClass('cardScroll');
}
});
});
当我从页面顶部开始滚动并且我的元素 (#card1) 仅位于页面中间时,“添加的类”会继续记录。
HTML:
<div class="col-lg-4 d-flex justify-content-around">
<div class="card" id="card1" style="width: 18rem;">
<div class="rounded-div">
<img class="card-img-top" src="" alt="">
</div>
<div style="text-align: center;" class="card-body">
<h5 class="card-title">Dummy Text</h5>
<p class="card-text">Dummy text</p>
</div>
</div>
</div>
CSS:
.cardScroll {
background-color: #d1e4f3;
box-shadow: 10px 10px 16px 0 rgb(31, 31, 31);
-webkit-transition: box-shadow 0.3s ease-out;
-moz-transition: box-shadow 0.3s ease-out;
-o-transition: box-shadow 0.3s ease-out;
transition: box-shadow 0.3s ease-out;
}
解决方案
我将 isScrolledIntoView 函数更改为以下内容,它似乎修复了它:
function isScrolledIntoView(el) {
var rect = el.getBoundingClientRect();
var elemTop = rect.top;
var elemBottom = rect.bottom;
// Only completely visible elements return true:
var isVisible = (elemTop >= 0) && (elemBottom <= window.innerHeight);
// Partially visible elements return true:
//isVisible = elemTop < window.innerHeight && elemBottom >= 0;
return isVisible;
}
我在这里找到了答案如何检查滚动后元素是否可见?
推荐阅读
- r - 按组添加行并在 R 中用 dplyr 填充它们
- spring-boot - 如何在 Spring Boot Junit 测试用例中覆盖 @Primary bean
- javascript - 在桌面上预览设备字体(不使用浏览器设备工具)
- javascript - 在具有重复符号的字符串数组中查找字符串
- business-objects - WEBI 查找重复行(某些列除外)并突出显示
- go - VSCode 使用启动配置在文件夹中运行所有 go 测试
- python - 如何使用#Python 从网站下载音乐文件
- flutter - 在 TextFormField 上使用snackBar 创建自定义错误消息
- wordpress - Woocommerce 单一产品页面无法正常工作
- mongodb - 当 _id 动态生成时,mongoosastic 引用如何不起作用