在窗口上刷新Skrollr调整大小

时间:2014-01-16 10:05:59

标签: javascript jquery skrollr

我使用的是基于窗口高度的常量 - 因此,如果用户调整浏览器的大小,则高度可能会发生变化。我很明显想在调整窗口大小时重新计算浏览器高度。这就是我现在所拥有的,但它似乎并没有起作用:

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函数,并在环顾四周时找到另一个片段 - 但似乎都没有正常工作。我把它设置错了吗?

1 个答案:

答案 0 :(得分:2)

多次调用init是一个noop。此外,您不需要再次初始化skrollr菜单,它只能使用更新链接。

使用最新的skrollr你可以这样做

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