gpt4 book ai didi

javascript - 淡入具有特定类的 div 的通用代码,在第一次运行后删除函数

转载 作者:行者123 更新时间:2023-11-30 00:18:34 25 4
gpt4 key购买 nike

我正在尝试创建一个通用函数,它可以在我的站点中放置一次并跨多个页面工作,既美观又轻便。

我希望能够使网站上的某些 div 在滚动到它们上方 10 像素时淡入。

我想通过简单地向我的 div 添加以下属性来做到这一点:

.fade-in-block#specific-block-name

我的想法是,我可以浏览该站点,添加此类和一个 ID,然后动画就可以运行了。

除了一件事,我几乎让它正常工作,在调用该函数后,滚动监听不断地继续到 console.log。我不喜欢这样,因为感觉它会不断尝试应用动画,从前端不会真正看到它,但我觉得幕后不断的数学运算可能会减慢速度。

这是我的 jQuery:

$('body .fade-in-block').each(function(){
var block = '#'+$(this).attr('id');
console.log('Block class is = '+block);
var offset = $(block).offset().top;
var $w = $(window).scroll(function () {
if ($w.scrollTop() > offset - 10) {
console.log('reached block turn-on point for '+block);
$(block).removeAttr('id'); // remove the ID from the element so the script doesn't continue to find the element
// fade and rise animation here
}
});
});

这是一个 JSFiddle .它工作得很好,但一旦你点击该 block ,你就会看到它不断记录滚动的每个像素。

一旦事件发生,我试图通过从元素中删除选择 id 来解决这个问题,但它继续运行。

最佳答案

滚动和调整大小事件都有这个问题,据说解决方案是debouncing .但是,我从来没有真正去抖动以正常工作。相反,我通常会创建一种开关,一旦滚动条件被激活,它就会关闭。在您的情况下,由于您有多个元素,因此您需要为每个元素分配一个开关。

$(window).on('scroll', function(){
$('.fade-in-block').each(function(){
var appear = $(this).attr('data-appeared');
if(!appear){
$(this).attr('data-appeared', true);
//do something to $(this)
}
})
})

这里我在数据属性出现后添加它,并在它出现后再次检查它。

关于javascript - 淡入具有特定类的 div 的通用代码,在第一次运行后删除函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33956535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com