2014-01-16 153 views
0

我使用基于窗口高度的常量 - 因此,如果用户调整浏览器大小,高度可能会改变。当窗口调整大小时,我显然希望重新计算浏览器的高度。这是我现在有,但似乎并不奏效:刷新滚动窗口调整大小

function resize_articles() { 
    var viewportHeight = $(window).height() - 80;        

    var constantsData = Math.floor(viewportHeight * 1); 
    var s = skrollr.init({ 
     //smoothScroll: false, 
     forceHeight: false, 
     constants: { 
     foobar: constantsData 
     } 
    }); 
    /* Initialise skrollr scroll menu */ 
    skrollr.menu.init(s, { 
     animate: true 
    }); 

    /* Building links */ 
    $('#link1').attr('data-menu-top', (viewportHeight + 400)); 
    $('#link2').attr('data-menu-top', (viewportHeight + 900)); 
    $('#link3').attr('data-menu-top', (viewportHeight + 1500)); 

    s.refresh(); 
} 
resize_articles(); 

$(window).resize(function() { 
    resize_articles(); 
    //skrollr.get().refresh(document.getElementsByClassName('skrollr')); 
}); 

我试图打电话给在页面调整大小,另一个片段,我发现,而环视resize_articles功能 - 但似乎没有正常工作。我把它设置错了吗?

回答

2

多次调用init是一个noop。你也不需要再次初始化skrollr-menu,它只会与更新链接一起工作。

随着最新skrollr你可以做到这一点

var s = skrollr.init({ 
    //smoothScroll: false, 
    forceHeight: false, 
    constants: { 
     foobar: function() { 
      return $(window).height() - 80; 
     } 
    } 
}); 
+0

谢谢!这工作完美。我不确定你多次调用init的意思,因为我试图删除skrollr.menu并且链接停止工作。 – user1788364

+0

您正在多次执行'resize_articles'。但是skrollr和skrollr-menu都不会被初始化**更多**而不是一次。 – Prinzhorn

+0

我想通过声明resize_articles作为函数然后我必须通过resize_articles()来启动它?然后我认为它必须在resize函数中再次声明。这是不正确的(我仍然在学习jQuery,所以原谅无知!)? – user1788364