突出显示菜单栏的航点

时间:2013-07-14 19:21:50

标签: javascript jquery html css jquery-waypoints

我正在制作一个网站,并希望将这个网站的一些内容合并到我的菜单中。 http://webdesign.tutsplus.com/tutorials/javascript-tutorials/create-a-sticky-navigation-header-using-jquery-waypoints/ 我真的很喜欢我的菜单栏根据部分进行更改,但我对javascript全新,并且遇到了一些麻烦。现在,它似乎没有起作用。有什么建议?谢谢!继承了一些代码

 <script language="javascript" type="text/javascript">
        $(function() {
        // Do our DOM lookups beforehand
        var nav_container = $(".nav-container");
        var nav = $("nav");
        nav_container.waypoint({
        handler: function(direction) {
        nav_container.toggleClass('sticky', direction=='down');

        }
        var sections = $('section');
        var navigation_links = $('nav a');
        sections.waypoint({
        handler: function(event, direction) {
        // handler code
        },
        offset: '35%'
        });
        var active_section;
        active_section = $(this);
        if (direction === "up") active_section = active_section.prev();
        var active_link = $('nav a[href="#' + active_section.attr("id") + '"]');
        navigation_links.removeClass("selected");
        active_link.addClass("selected");
        });

        $("li.nav-item").click(function() {
        $("html, body").animate({
        scrollTop: $($(this).children().attr("href")).offset().top + "px"}, {duration: 500, easing: "swing"
        });
        return false;
        });
        $(document).ready(function(){
        $('img').click(function(){
        // get the url of the picture we clicked
        var url = $(this).attr('src');
        // get the url of the large image
        var bigUrl = $('.large-picture > img').attr('src');
        // change the url of the big picture
        $('.large-picture > img').attr('src', url);
        $(this).attr('src', bigUrl);
        });
        });

        });

    </script> 

菜单栏 这里是菜单栏,如下图所示,它对应于导航导致跳转到的html中的标记

<div class = 'nav-container'>
    <nav>
        <div id = 'nav-items-container'>
            <ul class='nav-items'>
                <li class='nav-item'><a href='#what'>what</a></li>
                <li class='nav-item'><a href='#how'>how</a></li>
                <li class='nav-item'><a href='#why'>why</a></li>
                <li class='nav-item'><a href='#who'>who</a></li>
                <li class='nav-item'><a href='#where'>where</a></li>
            </ul>
        </div>
    </nav>
</div>

标记看起来像这样

<div class = 'mark' id = 'what'></div>
在每个标记之前和之后使用

标签来设置导航将更改的所需部分

2 个答案:

答案 0 :(得分:0)

看起来你正在另一个对航点的调用中调用航点。这是你想做的吗?

 nav_container.waypoint({
    //first call to waypoint
        handler: function(direction) {
        nav_container.toggleClass('sticky', direction=='down');

        }
        //close handler
        var sections = $('section');
        var navigation_links = $('nav a');

        //second waypoint call
        sections.waypoint({
        handler: function(event, direction) {
        // handler code
        },
        offset: '35%'
        });

您能描述一下您希望菜单如何更改以及在哪个路点(哪个元素)? 此外,如果您可以发布一些HTML,将会很有帮助。

答案 1 :(得分:0)

这对我来说很好。我写了一堆评论,希望很清楚。

   <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8" />
    <title>Smashing HTML5!</title>


    <style type="text/css">
    li { display:inline; background-color: #004900; padding: 4px; font-weight: bold;}
    li a { color:#fff; text-decoration: none;}

    .mark { position: absolute;  color: #fff; height: 500px; width: 100%; 
            font-size: 24px;  padding: 10px; padding-top: 50px;}

    #who{ top: 500px; background-color: #005600;}
    #what{ top: 1000px; background-color: #000078;}
    #how{ top: 1500px; background-color: #f30000;}
    #why{ top: 2000px; background-color: #00ff00;}
    #where{ top: 2500px; background-color: #000022;}

   .nav-container { z-index: 100;}

    </style> 


    <!--[if IE]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>  

    <![endif]-->
    <!--[if lte IE 7]>
    <script src="js/IE8.js" type="text/javascript"></script><![endif]-->
    <!--[if lt IE 7]>

    <link rel="stylesheet" type="text/css" media="all" href="css/ie6.css"/><![endif]-->

   <!-- DON'T FORGET TO CHANGE THESE PATHS -->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="/jquery.1.10.2.min"></script>

    <script src="/waypoints/waypoints.min.js"></script>

    <script src="/waypoints/shortcuts/sticky-elements/waypoints-sticky.min.js"></script>



   <script>

        $(document).ready( function(){

       var wid;


      /*the shortcut below is all you need to make the menu
         stick to the top. --- make sure to load 
       waypoints-sticky.min.js as I have in the 
       <head> section*/
       $('.nav-container').waypoint('sticky');

        //helper function that does the high-lighting --- I've written it out 
        //step by step 
        function highlight(hl_id){
          $("li > a").css({ "background-color" : "#004900", "color": "#fff"});
          $("li").css({"background-color" : "#004900", "color": "#fff"});
          $("#" + hl_id + "-nav").css({"background-color" : "#f0f0f0", "color": "#000"});
          $("#" + hl_id + "-nav > a").css({ 
            "background-color" : "#f0f0f0", "color": "#000"});  
       }


      /* now we turn the marks into waypoints*/
      $('.mark').waypoint(function(direction) {

         /* now we get the id of the waypoint we're jumping to*/
           wid = $(this).attr("id");

     //if we're scrolling up we get "previous" waypoint
     if ( direction == 'up' ){

      var highlight_p = $('#' + wid).waypoint('prev');
      wid_p = highlight_p.attr("id");

        highlight(wid_p);

     }

    //if we're scrolling up we get last waypoint
    else if ( direction == 'down' ) {

      highlight(wid);  
    }





    });



   });//end doc ready




    </script>



    </head>

   <body id="index" class="home">

   <div class='nav-container' style="position:fixed;">
    <nav>
        <div id='nav-items-container'>
            <ul class='nav-items'>

                <li class='nav-item' id="who-nav"><a href='#who'>who</a></li>
                <li class='nav-item' id="what-nav"><a href='#what'>what</a></li>
                <li class='nav-item' id="how-nav"><a href='#how'>how</a></li>
                <li class='nav-item' id="why-nav"><a href='#why'>why</a></li>
                <li class='nav-item' id="where-nav"><a href='#where'>where</a></li>
            </ul>
        </div>
    </nav>

    </div>



    <div class='mark' id='who'>who</div>
    <div class='mark' id='what'>what</div>
    <div class='mark' id='how'>how</div>
    <div class='mark' id='why'>why</div>
    <div class='mark' id='where'>where</div>

    </body>
    </html>