我想在向下滚动时更改导航的<a>
元素的颜色。
这里的例子是我把原始的jquery代码https://codyhouse.co/gem/vertical-fixed-navigation/
我为我的项目更改了这段代码,但它不工作,这是怎么回事?
var contentSections = $('.section');
var navigationItems = $('.nav a');
updateNavigation();
$(window).on('scroll', function(){
updateNavigation();
});
function updateNavigation() {
contentSections.each(function(){
$this = $(this);
var activeSection = $('.nav a[href="#'+$this.attr("class")+'"]');
if ( ( $this.offset().top - $(window).height()/2 < $(window).scrollTop() ) && ( $this.offset().top + $this.height() - $(window).height()/2 > $(window).scrollTop() ) ) {
navigationItems.eq(activeSection).addClass('selected');
}else {
navigationItems.eq(activeSection).removeClass('selected');
}
});
}
1条答案
按热度按时间zf2sa74q1#
下面是一个codepen:http://codepen.io/esten/pen/GjAxRX
有几个问题。您的
activeSection
选择器返回该元素上的所有类名,而不仅仅是您想要的节标识符。我更改了选择器,以查找.attr('id')
而不是class(我必须向portfolio部分添加一个ID,并更改了portfolio头部的ID以适应此情况)。另外,由于
activeSection
选择了锚标记元素,因此您只需要将类直接添加到该元素。这应该会将
selected
类应用于nav元素,然后你需要更具体地使用CSS选择器:希望这对你有帮助!