javascript - jQuery:粘性导航栏更改边距

标签 javascript jquery html css

我有一个在页面滚动时移动的导航栏,这是 jQuery:

 $(document).ready(function() {  
    var stickyNavTop = $('.nav').offset().top;  
    var stickyNav = function(){  
    var scrollTop = $(window).scrollTop();  
    if (scrollTop > stickyNavTop) {   
        $('.nav').addClass('sticky');
    } else {  
        $('.nav').removeClass('sticky');   
      }  
    };  

    stickyNav();  

    $(window).scroll(function() {  
        stickyNav();  
    });  
    }); 

和 CSS

.sticky {  
        position: fixed;  
        width: 100%;  
        left: 0;  
        top: 0;  
        border-top: 0;  
    }  

问题是,当导航栏位置固定时,导航栏下的主要内容重新排列边距,因为它认为导航栏已被删除但我不想要这个,我希望我的盒子留在他们的地方。 我该怎么办?

这是 jsfiddle:

https://jsfiddle.net/omidh/cvjt0eLL/6/

最佳答案

此变通方法使您的标记保持原样,对 jQuery 和 CSS 进行最少的编辑,请参阅下面的演示和代码。

演示: https://jsfiddle.net/cvjt0eLL/10/

添加的 CSS:

.push {
    margin-top: 50px; /*same height as navbar*/
}

更新的 jQuery:

 $(document).ready(function () {
     var stickyNavTop = $('.nav').offset().top;
     var stickyNav = function () {
         var scrollTop = $(window).scrollTop();
         if (scrollTop > stickyNavTop) {
             $('.nav').addClass('sticky');
             $('.content').addClass('push'); // added
         } else {
             $('.nav').removeClass('sticky');
             $('.content').removeClass('push'); //added
         }
     };

     stickyNav();

     $(window).scroll(function () {
         stickyNav();
     });
 });

关于javascript - jQuery:粘性导航栏更改边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29304881/

相关文章:

javascript - 如何将多个 svg 图标捆绑到 1 个文件中?

javascript - jQuery - 打印和预览特定的 div

php - 使用 php 在一页上实现多阶段表单

javascript - 按下键时循环一个函数

Javascript - 替换所有少于 X 个字符的行

javascript - 流体中动态创建的菜单

jquery - Ipad 中的触摸滚动问题

javascript - 创建一个 jQuery 插件,使单个元素在调整窗口大小时使用react。我如何处理听众?

html - 隐藏时下拉在导航中留下间隙

javascript - Meteor 方法向客户端返回 undefined (异步)