多个元素可见——需要函数来确定页面上哪个元素较高?

发布于 2024-12-21 09:39:05 字数 1150 浏览 4 评论 0原文

我正在使用以下代码(我从几年前的另一篇文章中获得)来识别在用户浏览器中完全可见的元素:

function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
}

,我检查多个元素并在函数返回时滚动到它们:

        if(isScrolledIntoView($('#hero')) && (!($('#hero').hasClass('selected')))){
            $('div, img').removeClass('selected');
            $('#hero').addClass("selected");
            $("#nav-dock").animate({top: '200px'});
        }

        if(isScrolledIntoView($('#home-digital-trans')) && (!($('#home-digital-trans').hasClass('selected')))){
            $('div, img').removeClass('selected');
            $('#home-digital-trans').addClass("selected");
            $("#nav-dock").animate({top: '800px'});
        }

然后 在一些罕见的情况下,我会同时看到两个元素。因此,我试图弄清楚如何编写一个函数,如果多个元素可见,该函数可以选择“更高”的元素。

我什至不知道从哪里开始——我真的不是一个 jQuery 程序员。也许对类 .nav 的所有元素使用position(),然后返回最接近顶部且可见的元素?

I am using the following code, which I garnered from another post from a few years back, to identify elements that are fully visible in a user's browser:

function isScrolledIntoView(elem)
{
    var docViewTop = $(window).scrollTop();
    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;
    var elemBottom = elemTop + $(elem).height();

    return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
}

I'm then checking for multiple elements and scrolling to them if the function returns:

        if(isScrolledIntoView($('#hero')) && (!($('#hero').hasClass('selected')))){
            $('div, img').removeClass('selected');
            $('#hero').addClass("selected");
            $("#nav-dock").animate({top: '200px'});
        }

        if(isScrolledIntoView($('#home-digital-trans')) && (!($('#home-digital-trans').hasClass('selected')))){
            $('div, img').removeClass('selected');
            $('#home-digital-trans').addClass("selected");
            $("#nav-dock").animate({top: '800px'});
        }

But in some rare cases, I'm having BOTH elements visible at the same time. So I'm trying to figure out how I can write a function that can choose the "higher" element if more than one element is visible.

I don't even know where to start--I'm not a jQuery programmer really. Maybe using position() on all elements with class .nav and then returning the element that is closest to the top and visible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文