【问题标题】:Sticky navbar working on jsfiddle, but not as expected on localhost在 jsfiddle 上工作的粘性导航栏,但在 localhost 上不如预期
【发布时间】:2016-05-08 02:19:34
【问题描述】:

我已经组合了一个sticky navbar,它出现在相对位置 10 像素之后,然后在滚动超过 offset().top 时变为固定。 这在小提琴上可以按需要工作,但是在 localhost(使用完全相同的代码)上,导航栏一出现就固定了(它应该相对定位到偏移点,如小提琴所示)。

希望了解它为何在 localhost 上表现不同?

另外,我添加了 jquery (<script type="text/javascript" src="//code.jquery.com/jquery-1.11.3.min.js"></script>) 并且没有控制台错误

这是我从 localhost 运行的 javascript:

<script type="text/javascript">
  document.getElementById('navig').style.visibility = 'hidden';
  var fixed = false;
  var topTrigger = $('#navig').offset().top;

  $(window).scroll(function () {
    if ($(this).scrollTop() > 10) {
      document.getElementById('arr_downpoint').style.visibility = 'hidden';
      document.getElementById('navig').style.visibility = 'visible';   
    }
    else {
      document.getElementById('arr_downpoint').style.visibility = 'visible';
      document.getElementById('navig').style.visibility = 'hidden';
    }    

  });
  $(document).scroll(function() {
    if( $(this).scrollTop() >= topTrigger ) {
      if( !fixed ) {
        fixed = true;
        $('#navig').css({'position':'fixed', 'top':'0'});
      }
    } else {
      if( fixed ) {
        fixed = false;
        $('#navig').css({'position':'relative'});
      }
    }
  });
</script>

【问题讨论】:

  • 它不起作用是什么意思?您检查控制台是否有错误?
  • 在 jsFiddle 中,js 代码被包裹在窗口 onload 处理程序中。也将您的 sn-p 设置在其中。也就是说,即使在 jsFiddle 中,代码也确实有 bug……
  • 您在 CSS 中的 HTML 元素 nav 上有一个绝对位置,这可能是冲突,请将其放在类 .navclass 或 id 上。

标签: javascript jquery localhost navbar sticky


【解决方案1】:

尝试将 &lt;script&gt; 标记中的所有内容包装到 $(document).ready() 函数中:

$(function () {
  document.getElementById('navig').style.visibility = 'hidden';
  var fixed = false;
  var topTrigger = $('#navig').offset().top;

  $(window).scroll(function () {
    if ($(this).scrollTop() > 10) {
      document.getElementById('arr_downpoint').style.visibility = 'hidden';
      document.getElementById('navig').style.visibility = 'visible';   
    }
    else {
      document.getElementById('arr_downpoint').style.visibility = 'visible';
      document.getElementById('navig').style.visibility = 'hidden';
    }   

  });
  $(document).scroll(function() {
    if( $(this).scrollTop() >= topTrigger ) {
      if( !fixed ) {
        fixed = true;
        $('#navig').css({'position':'fixed', 'top':'0'});
      }
    } else {
      if( fixed ) {
        fixed = false;
        $('#navig').css({'position':'relative'});
      }
    }
  });
});

【讨论】:

  • 脚本的任何部分都不能使用它,它只是显示为静态页面,在 localhost jsfiddle.net/qz7531bu/69 上相同
  • 好的,很抱歉 - 小提琴和本地主机的问题是导航栏需要出现相对的(在标题的底部),直到它固定时达到偏移量。跨度>
  • @AgniScribe 我不明白?
  • 我的意思是,导航栏的位置(在css中指定)是标题底部的position: absolute。所以当它触及 10px 并出现时,直到它触及 offset()。顶部,它需要留在标题的底部。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多