Javascript 导航栏a在特定滚动后更改颜色

Javascript 导航栏a在特定滚动后更改颜色,javascript,html,jquery,css,Javascript,Html,Jquery,Css,我有个问题似乎解决不了。所以,我想做的是滚动到一定距离(最好滚动到特定的div框);导航栏 Välkommen直到min hemsida! Om米格 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡。 有问题吗?电邮至 你将随风旅行。蒲公英之旅。 window.onscroll=function(){scrollFunct

我有个问题似乎解决不了。所以,我想做的是滚动到一定距离(最好滚动到特定的div框);导航栏


    Välkommen直到min hemsida! Om米格 知识是一种美德,是一种美德,是一种美德,是一种美德。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人在一个无教区的房间里互相指责。除偶尔因疏忽而死亡外,不得因疏忽而导致动物死亡。

    有问题吗?电邮至 你将随风旅行。蒲公英之旅。 window.onscroll=function(){scrollFunction()}; 函数滚动函数(){ if(document.body.scrollTop>130 | | document.documentElement.scrollTop>130){ document.getElementById(“hem”).style.top=“0”; }否则{ document.getElementById(“hem”).style.top=“-10rem”; } }
    附:链接的js文件是视差效果滚动

    谢谢你的帮助


    演示:

    我知道这不是这个问题的最佳解决方案。如果你有很多链接,但只是为了给你一个解决方案,那就需要很多代码

    这样做的目的是获得触发样式更改的div的偏移量。并收听您的window onscroll活动。无论何时到达div的开头,都会添加一个预定义的类,并在离开div时将其删除

    就你而言:

    html:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <link rel="stylesheet" type="text/css" href="main.css" />
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
            <script src="https://cdn.jsdelivr.net/parallax.js/1.4.2/parallax.min.js"></script>
        </head>
        <body>
            <main class="parallax-window" data-parallax="scroll" data-image-src="https://i.pinimg.com/originals/bb/e7/42/bbe742c899cb149fadfc5dba9117311b.jpg">
                <header>
                    <nav class="nav1">
                        <ul>
                            <li>
                                <a id="link1">
                                    <span>hem</span>
                                </a>
                            </li>
                            <li>
                                <a id="link2">
                                    <span>om mig</span>
                                </a>
                            </li>
                            <li>
                                <a>
                                    <span>mitt arbete</span>
                                </a>
                            </li>
                        </ul>
                    </nav>
                </header>
                <div id="div"></div>
                <div id="divv"></div>
            </main>
        </body>
    </html>
    
    js:

    let div=document.getElementById(“div”);
    设divv=document.getElementById(“divv”);
    让link1=document.getElementById(“link1”);
    让link2=document.getElementById(“link2”);
    //抵消
    设divOffset=div.offsetTop;
    设divvOffset=divv.offsetTop;
    //在类进入范围时设置该类
    window.onscroll=()=>{
    如果(window.pageYOffset>=divOffset&&window.pageYOffset=divvOffset){
    link2.classList.add(“新类”)
    }否则{
    link2.classList.remove(“newClass”);
    }
    }
    
    ps:这不是一个完美的解决方案,您可以使用JQuery轻松地完成这项工作。您可以检查此链接以使用它。


    希望对您有所帮助

    我知道这不是解决此问题的最佳方案。如果你有很多链接,但只是为了给你一个解决方案,那就需要很多代码

    这样做的目的是获得触发样式更改的div的偏移量。并收听您的window onscroll活动。无论何时到达div的开头,都会添加一个预定义的类,并在离开div时将其删除

    就你而言:

    html:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <link rel="stylesheet" type="text/css" href="main.css" />
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
            <script src="https://cdn.jsdelivr.net/parallax.js/1.4.2/parallax.min.js"></script>
        </head>
        <body>
            <main class="parallax-window" data-parallax="scroll" data-image-src="https://i.pinimg.com/originals/bb/e7/42/bbe742c899cb149fadfc5dba9117311b.jpg">
                <header>
                    <nav class="nav1">
                        <ul>
                            <li>
                                <a id="link1">
                                    <span>hem</span>
                                </a>
                            </li>
                            <li>
                                <a id="link2">
                                    <span>om mig</span>
                                </a>
                            </li>
                            <li>
                                <a>
                                    <span>mitt arbete</span>
                                </a>
                            </li>
                        </ul>
                    </nav>
                </header>
                <div id="div"></div>
                <div id="divv"></div>
            </main>
        </body>
    </html>
    
    js:

    let div=document.getElementById(“div”);
    设divv=document.getElementById(“divv”);
    让link1=document.getElementById(“link1”);
    让link2=document.getElementById(“link2”);
    //抵消
    设divOffset=div.offsetTop;
    设divvOffset=divv.offsetTop;
    //在类进入范围时设置该类
    window.onscroll=()=>{
    如果(window.pageYOffset>=divOffset&&window.pageYOffset=divvOffset){
    link2.classList.add(“新类”)
    }否则{
    link2.classList.remove(“newClass”);
    }
    }
    
    ps:这不是一个完美的解决方案,您可以使用JQuery轻松地完成这项工作。您可以检查此链接以使用它。


    希望这是有帮助的

    检查此if help检查此if help嗯,您发送的链接正是我需要的。但问题是,我似乎无法让它为我工作,我还想知道,当到达特定的div时,是否可以更改span元素的颜色。请看我更新的JSFIDLE以便更好地理解:)如果链接中的代码不起作用,请尝试使用我提供给您的代码,它应该会起作用,我在您的项目中尝试了您在问题中提供的链接。很好,但我有更多的链接(标记)。我应该添加额外的链接(链接3、链接4等)?这将是一个很长的代码,但你可以使用这个代码,比如在数组中添加元素,并根据当前元素偏移量执行条件。代码确实有效,但当我尝试添加额外的链接时,我的导航栏似乎没有明显的原因就消失了。它只适用于您设置代码的方式;我不能让它以任何其他方式工作…嗯,你发送的链接正是我需要的。但问题是,我似乎无法让它为我工作,我还想知道,当到达特定的div时,是否可以更改span元素的颜色。看看我更新的JSFIDLE to un
    let div = document.getElementById("div");
    let divv = document.getElementById("divv");
    
    let link1 = document.getElementById("link1");
    let link2 = document.getElementById("link2");
    
    //getting offset
    let divOffset = div.offsetTop;
    let divvOffset = divv.offsetTop;
    
    //setting the class when it enters the range 
    window.onscroll = ()=>{
    if (window.pageYOffset >= divOffset && window.pageYOffset <= divvOffset) {
        link1.classList.add("newClass")
      } else {
        link1.classList.remove("newClass");
      }
     if (window.pageYOffset >= divvOffset) {
        link2.classList.add("newClass")
      } else {
        link2.classList.remove("newClass");
      }
    }