scrollTop() 返回元素下方的位置
scrollTop() returning position below element
当导航栏经过我页面上的某些点时,我正在使用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
视为滚动顶部+导航栏高度
var scrollTop = $(window).scrollTop() + navHeight;
突出显示执行此操作about
if (scrollTop > (portfolioPoint - navHeight) && scrollTop < contactPoint)
你必须放弃.navbar
高度(就像你在其他人中所做的那样)
if (scrollTop > (portfolioPoint - navHeight) && scrollTop < (contactPoint - navHeight))
在这里,您的代码笔可以 http://codepen.io/anon/pen/XXoLWM?editors=0110
您更新的笔在这里。切换按钮时计算有问题或条件更好:
} else if (scrollTop > (portfolioPoint - navHeight) && scrollTop < contactPoint)) {
// in this condition you stick too long, you forgot the navHeight
} else if (scrollTop > (contactPoint - navHeight)) {
// therefore you reach this too late
}
在这里的第一个条件下,您需要添加导航高度:
} else if (scrollTop > (portfolioPoint - navHeight) &&
scrollTop < (contactPoint - navHeight))) {
// like this it works
} else if (scrollTop > (contactPoint - navHeight)) {
// and here we go...
}
相关文章:
- 从鼠标点(及更多)查询位置元素
- 保持光标位置元素在顶部使用 svg
- 如何在每次页面重新加载时更改渐变背景,同时保持光标位置元素处于活动状态
- 使用JS暂时禁用在位置/元素处滚动
- 相对于另一个元素的位置元素不起作用
- 返回包含随机位置元素的数组
- 如何在 Jquery 中根据屏幕大小移动绝对位置元素
- 如何在html中设置固定位置元素的最大深度
- 无论如何,如果绝对位置元素位于屏幕下方,则使正文滚动条出现
- 绝对位置元素未隐藏在滚动框之外
- 为什么浮动位置 元素缩小时元素不移动
- 固定位置元素…动作
- 当元素处于相对位置元素时,查找元素偏离窗口的jQuery或JavaScript方法
- 绝对位置元素,这样它们的行为就像浮动一样
- jQuery鼠标在菜单和动画位置元素后面
- 捕获绝对位置元素上的单击事件
- 如何设置固定位置元素的高度以达到浏览器窗口的底部
- jQuery绑定位置:元素的绝对位置
- 如何将固定位置元素限制为浏览器窗口的高度
- 如何在不使用JS的情况下使用TOC滚动页面上的固定位置元素