javascript - jQuery - 检测元素是否在视口(viewport)中

标签 javascript jquery html css

我正在编写一个脚本,当不同的元素出现在屏幕上时为它们提供一些动画。

第一步是检测它们何时进入屏幕。但这似乎不起作用。

我尝试过的:

-.visible()选择器,我很快发现它在 jQuery 中做了其他事情。

-不同的插件,但我发现它们比我需要的要多得多,因此我决定自己写/找一些东西。

-我当前的脚本(我在论坛的某处找到它并决定根据我的需要对其进行编辑)但是它有点奇怪。

$.fn.isInViewport = function () {
    let elementTop = $(this).offset().top;
    let elementBottom = elementTop + $(this).outerHeight();

    let viewportTop = $(window).scrollTop();
    let viewportBottom = viewportTop + $(window).height();

    return elementBottom > viewportTop && elementTop < viewportBottom;
};

$(window).scroll(function () {
    if ($('.blogcard ').isInViewport()) {
        $(this).addClass("test");
        console.log('success.')
    } else {
        console.log('No success.')
    }
});

不幸的是,这似乎并没有为我的 <div class='blogcard'> 添加一个类。 .

最佳答案

您对“this”的使用是针对窗口而不是 .blogcard 元素:

$(window).scroll(function () {
    if ($('.blogcard ').isInViewport()) {
        //  Use .blogcard instead of this
        $('.blogcard').addClass('test');
        console.log('success.')
    } else {
        //  Remove class
        $('.blogcard').removeClass('test');
        console.log('No success.')
    }
});

关于javascript - jQuery - 检测元素是否在视口(viewport)中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52220491/

相关文章:

javascript - 使用 gulp connect 时 Bower 组件根目录

javascript - 自动选择 html 选择标签的前一个和下一个选项

jquery - @require-ing jQuery 覆盖页面的 $ 变量

jquery - 如何在页面加载时隐藏空白div

html - Bootstrap Affix 仅适用于没有滑出菜单的页面

javascript - 验证表单中的多个字段

javascript - 如何让子组件使用多个值更新父数据

javascript - 在单个日历或日期选择器中选择日或月或年(灵活选择模式)

javascript - JQuery 点击显示图像,然后在延迟后让它消失?

javascript - Angular 1.5 组件与旧指令 - 链接函数在哪里?