Change navigation active class on window scroll

前端 未结 5 1414
心在旅途
心在旅途 2020-12-28 11:31

i want to create a scroll effect like here http://www.strikingly.com/s/pages/default-ion?demo=ion#1 All i need for this moment is to change navigation li class active when

5条回答
  •  庸人自扰
    2020-12-28 12:11

    DEMO

    Serlite's code is very good but had some bugs.

    1. If you scroll down to the end last two a elements have active class so both are highlighted.

    Solution

    added $('#menu-center ul li a').removeClass("active"); to remove all previous active class before adding new class in the below code.

    function onScroll(event){
        var scrollPos = $(document).scrollTop();
        $('#menu-center a').each(function () {
            var currLink = $(this);
            var refElement = $(currLink.attr("href"));
            if (refElement.position().top <= scrollPos && refElement.position().top + refElement.height() > scrollPos) {
                $('#menu-center ul li a').removeClass("active"); //added to remove active class from all a elements
                currLink.addClass("active");
            }
            else{
                currLink.removeClass("active");
            }
        });
    }
    
    1. If you click on 2nd or greater menu link it makes you scroll to the location but changes active class to previous link.

    Solution

    $('html, body').stop().animate({
                'scrollTop': $target.offset().top+2
    

提交回复
热议问题