首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jQuery offset()更改滚动上每个元素的颜色?

如何使用jQuery offset()更改滚动上每个元素的颜色?
EN

Stack Overflow用户
提问于 2013-08-13 08:52:51
回答 1查看 421关注 0票数 0

我写了一个脚本,使我的导航停留在屏幕的顶部,一旦它通过了某个点。它工作得很好,所以我决定尝试编写另一个脚本,在导航到达页面中的部分时突出显示该部分。唯一的问题是我估计了每个部分的像素数。我知道我可以使用jQuery .offset()来使它更精确,但我不确定如何在我当前的脚本中编写它。下面是相关的HTML和javaScript。我真的很感激任何可靠的建议。谢谢。

代码语言:javascript
复制
<nav class='pink-bar'><!--<img class='nav' src='assets/nav.png' alt='navigation bar' />  -->
     <div class='content'>
            <ul class='menu'>
                <li id='menu-1'>Home</li>
                <li id='menu-2'>Buy The Experience</li>
                <li id='menu-3'>Barter</li>
                <li id='menu-4'>Preview</li>
                <li id='menu-5'>About</li>
            </ul>


$(function() {
   var num = 460; //number of pixels before modifying styles
   var num2 = 2862;
   var num3 = 3715;
   var num4 = 4510;

$(window).on('scroll', function () {
    if  ($(window).scrollTop() > num4)
    {   $('.pink-bar').addClass('fixed');
        $('#menu-5').addClass('ScrollNav');
        $('#menu-4, #menu-3, #menu-2,').removeClass('ScrollNav');


    } else if ($(window).scrollTop() > num3)
    {   $('.pink-bar').addClass('fixed');
        $('#menu-4').addClass('ScrollNav');
        $('#menu-5, #menu-3, #menu-2 ').removeClass('ScrollNav');

    } else if  ($(window).scrollTop() > num2)
    {   $('.pink-bar').addClass('fixed');
        $('#menu-3').addClass('ScrollNav');
        $('#menu-4, #menu-5, #menu-2').removeClass('ScrollNav');

    } else if  ($(window).scrollTop() > num) {
        $('.pink-bar').addClass('fixed');
        $('#menu-2').addClass('ScrollNav');
        $('#menu-3, #menu-5, #menu-3').removeClass('ScrollNav');

    }  else {
        $('.pink-bar').removeClass('fixed');
        $('#menu-2, #menu-3, #menu-4, #menu-5').removeClass('ScrollNav');
    }

    });

});
EN

回答 1

Stack Overflow用户

发布于 2013-08-13 10:10:56

下面是什么:

代码语言:javascript
复制
var num = $('#menu-1').offset().top;
var num2 = $('#menu-2').offset().top; 

根据样式的不同,您可能需要稍微调整一下页边距和边框。

一个更好的方法是给所有菜单项一个类,然后用$('.menu-class').each(...)遍历所有菜单项,并根据它们(调整后的偏移量)和当前位置决定要做什么。这将使其可扩展到更多的元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18198997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档