简体   繁体   中英

Fix navigation position when scrolling

I want to fix the position of navigation at the top when the navigation position and scroll position are equal.

Please let me know how can I get the position of navigation and page scroll position? I want something like this: http://new.livestream.com/live-video-tools

I've tried:

$(function() {

    // grab the initial top offset of the navigation 
    var sticky_navigation_offset_top = $('#main-heading').offset().top;

    // our function that decides weather the navigation bar should have "fixed" cs s position or not.
    var sticky_navigation = function(){
        var scroll_top = $(window).scrollTop(); // our current vertical position from the top

        // if we've scrolled more than the navigation, change its position to fixed to stick to top,
        // otherwise change it back to relative
        if(scroll_top > sticky_navigation_offset_top) { 
            $('#fixed_nav').css({ 'position': 'fixed', 'top':6, 'left':0, 'width':'100%', 'z-index':999, 'height':80,  'background':'#fff' });
        } else {
            $('#fixed_nav').css({ 'position': '','overflow': 'visible', 'display':'block','height':80}); 
        }          
    };

    // run our function on load
    sticky_navigation();

    // and run it again every time you scroll
    $(window).scroll(function() {
        sticky_navigation();
    });
});

This is old, but deserves an answer for Googlers' benefit.

See Fiddle here.

$(function () {
    var offset = $('#nav').offset().top;
    var nav = function () {
        var scroll = $(window).scrollTop();
        if (scroll < offset) {
            $('#nav').css({ 'position': 'relative' });
        }
        else {
            $('#nav').css({ 'position': 'fixed', 'top': 0 });
        }
    };
    nav();
    $(window).scroll(function () {
        nav();    //this ensures we check again every time the user scrolls
    });

});

OP - you probably figured it out by now, but I'm not sure why you were checking the offset of #main-heading and then setting the position of a different #fixed-nav , that's probably where you're issue was.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM