滚动到具有Menuactive类

时间:2015-07-04 17:48:07

标签: jquery css

这是我在很多网站上使用的一些代码,朋友帮助清理并完全按照需要工作。让我们说他现在已经遥不可及了一段时间,而且我在尝试调整其中的一部分工作方面遇到了一些麻烦。

this.checkActiveSection = function(){
    var fromTop = jQuery(window).scrollTop();
    var sections = [];
    jQuery('nav ul li a').removeClass('menuactive') ;
    jQuery('.anchor').each(function(){
        var sectionTopOffset = jQuery(this).offset().top;
        var nextSectionTopOffset = jQuery(this).next().offset().top;
        if(sectionTopOffset <= fromTop){
            sections.push(jQuery(this).data('id'));
        }else if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
            sections.push(jQuery(this).data('id'));
        }
    });
    jQuery('nav ul li a, .logo a').removeClass("menuactive");
    jQuery('nav ul li a[data-id="'+sections[sections.length - 1]+'"]').addClass('menuactive');
};
this.scrollEasing = function(){
    jQuery(window).scroll(this.checkActiveSection);
    jQuery('nav ul li a, .logo a').click(function(e){
        e.preventDefault();
        var idSectionGoto = jQuery(this).closest('a').data('id');
        $('html, body').stop().animate({
            scrollTop: jQuery('body[data-id="'+idSectionGoto+'"],.anchor[data-id="'+idSectionGoto+'"]').offset().top+1
        }, 1500, function(){
            _this.checkActiveSection();
        });
    }) ;
}

这是一个滚动到节的功能,可以在导航按钮中添加和删除“menuactive”类。我最初遇到的问题是,在某些浏览器和屏幕分辨率下,滚动到1px将会关闭,并且您将看不到正确的导航按钮处于活动状态。使用offset()。top + 1似乎很容易解决问题 - 虽然我有一个抱怨它...滚动回到顶部(身体锚)时的+1偏移让我疯了。我已经尝试了很多方法告诉它只将+1应用于“.anchor”类而不是“body”,但它似乎打破了我尝试的任何方法的整个滚动功能。任何帮助将不胜感激。

我唯一的解决方法是使用“body {margin:-1px 0 0;}”,但这看起来有点傻。

谢谢!

0 个答案:

没有答案