javascript - scrollTop() 返回元素下方的位置

标签 javascript jquery css

当导航栏经过我页面上的某些点时,我正在使用 jquery 来突出显示它,但是有一个部分导航栏在它经过对象下方之前不会被突出显示。具体的违规者是页面的联系部分。

这是代码笔 - http://codepen.io/Davez01d/pen/NxMzYy?editors=0010

这是相关的 html -

<hr id="contact-anchor" class="line section-seperator">

CSS-

.on-section {
  background-color: #2766af !important;
  color: white;
}
.on-section:focus {
  color: white;
}

和 javascript -

$(window).scroll(function() {
  var navHeight = $(".navbar").outerHeight();
  var scrollTop = $(window).scrollTop(); 
  var aboutPoint = $('#about').offset().top;
  var lineMargin = parseInt($('.section-seperator').css('marginTop'));
  var portfolioPoint = $('#portfolio-anchor').offset().top;
  var contactPoint = $('#contact-anchor').offset().top;

  if (scrollTop < aboutPoint)  {
    $('#home-btn').addClass('on-section');
    $('#about-btn').removeClass('on-section');
  } else if (scrollTop > aboutPoint && scrollTop < (portfolioPoint - navHeight)) {
    $('#home-btn').removeClass('on-section');
    $('#about-btn').addClass('on-section');
    $('#portfolio-btn').removeClass('on-section');
  } else if (scrollTop > (portfolioPoint - navHeight) && scrollTop < contactPoint) {
    $('#about-btn').removeClass('on-section');
    $('#portfolio-btn').addClass('on-section');
    $('#contact-btn').removeClass('on-section');
  } else if (scrollTop > (contactPoint - navHeight)) {
    $('#portfolio-btn').removeClass('on-section');
    $('#contact-btn').addClass('on-section');
  }
});

最佳答案

进行此更改为我解决了这个问题,我认为您忘记了您正在将 scrollTop 视为 scrollTop + navbar 高度

var scrollTop = $(window).scrollTop() + navHeight;

关于javascript - scrollTop() 返回元素下方的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35351345/

相关文章:

javascript - 在 GroupAvatar 中,我的 "max"头像不遵守我的主题规则

javascript - 如何修复 React 中的不变违规?

css - Flex Grow(列)超过水平宽度

html - @font-face 没有加载字体

html - 缩放时发生 CSS 奇怪的事情

javascript - 提交html后计算表单的文本框值

javascript - jQuery 触发点击在 IE 中不起作用

未找到 Javascript/jQuery Google map 路线

javascript - 自动悬停效果

javascript - 猫头鹰旋转木马在初始加载后消失而不刷新