的背景:
我正在尝试创建一个系统,该系统允许使用鼠标向上滚动和鼠标向下滚动来滚动一种地图,如下所示:
 -------
|       |
|   1   |
|       |
 -------
 -------    -------   -------   -------
|       |  |       | |       | |       |
|   2   |  |   3   | |   4   | |   5   |
|       |  |       | |       | |       |
 -------    -------   -------   -------
                                -------
                               |       |
                               |   6   |
                               |       |
                                -------
上面的每个框都在 javascript 中重置为浏览器的高度和宽度。当您上下滚动鼠标时,浏览器将滚动到地图中的相同位置,从 div 1 开始,然后是 2,依此类推。这个定位是通过我的滚动功能设置的,它监听鼠标滚动并在顶部添加适当的填充,在左侧添加边距,以创建上面地图的错觉。
这是它的codepen:
http://codepen.io/lorenzoi/pen/mxejJ
这是它的javascript:
$(function(){
    $(window).on('resize', function(){
        var $divs = $('.vertical, .horizontal > div'),
        ww =  $(this).width(),
        wh =  $(this).height();
        $divs.css({
            height : wh,
            width : ww
        });
        $('.horizontal').each(function(){
            var $container = $(this),
            nbChildren = $container.children().length;
            posY = $container.offset().top,
            $container.css({
                height: ww*(nbChildren-1) + wh,
                width: ww*(nbChildren)
            });
        });
    }).trigger('resize');
    $(window).on('scroll', function(){
        var wh = $(window).height(),
        scroolTop = $(window).scrollTop();
        $('.horizontal').each(function(){
            var $container = $(this),
            posY = $container.offset().top,
            height = $container.height(),
            nbChildren = $container.children().length,
            marginMax = $container.width()/nbChildren*(nbChildren-1),
            marginL = scroolTop - posY;
            if(marginL<0) marginL = 0;
            else if (marginL>marginMax) marginL = marginMax;
            $container.css('marginLeft', -marginL);
            $container.css('paddingTop', marginL);
        });
    }).trigger('scroll');
});
问题:
调整窗口大小会创建一个奇怪的 div 偏移量,当为 div 2 到 5 调用滚动函数时,它会自行修复。在这些 div 中调整大小时,它们似乎会自行偏移,然后只有在调用滚动函数时才会修复。
.trigger('调整大小'); 应该总是被调用,是吗?我不知道为什么只有在创建滚动功能时才会调用它。
如何补救?