iScroll不会水平滚动整个div的宽度

时间:2013-03-31 02:51:05

标签: javascript jquery mobile trigger.io iscroll

iScroll不会水平滚动div的整个宽度。它停在错误的宽度值,我似乎无法找到该值的来源。主滚动div宽度没有变化,所以我不需要调用refresh()

基本上我在滚动div中有一个div正在改变大小,所以内部的div可以改为绝对位置,而其他div最初是浮动的。我不想使用iScroll但是因为我正在用Trigger.io构建一个HTML5 iOS WebView应用程序,所以这是必要的。

http://jsfiddle.net/simpleshadow/wQQEM/15/

var myScrollers = [];
$(function() {

    var scrolls = $('.scrolls');

    $.each(scrolls, function(i, value) {
        var self = this,
            imageDiv = $(this).find('.imageDiv'),
            imageWrapper = $(this).find('.imageWrapper'),
            images = $(this).find('.imageDiv img'),
            width = 0;

        $.each(images, function(index, value){
            width += $(this).width();
        });
        imageDiv.css('right', (-$(this).width()+images.first().width()) + 'px');
        imageWrapper.width(images.first().width());

        myScrollers[i] = new iScroll($(this)[0], { 
            hScroll: true, 
            vScroll: false, 
            hScrollbar: false, 
            vScrollbar: false,
            onScrollMove: function(e){
                var x = 0;
                -myScrollers[i].x >= 0 ? x = -myScrollers[i].x : x = 0;
                updateWindow($(self), x);
            },
            onScrolling: function(e) {
                var x = 0;
                -myScrollers[i].x >= 0 ? x = -myScrollers[i].x : x = 0;
                updateWindow($(self), x);
            }
        });

    });

    // Update the window
    function updateWindow(el, x) {

        var x = x,
            width = 0,
            imageDiv = el.find('.imageDiv'),
            imageWrapper = el.find('.imageWrapper'),
            images = el.find('.imageDiv img');

        el.find('.imageDiv, .imageDiv img').css({
            height: (x/160)*75+75 >= 150 ? 150 : (x/160)*75+75
        });

        for (var i = 0, l = images.length; i < l; i++) {
            width += $(images[i]).width();
            if (imageWrapper.width() >= width && i !== 0) {
                $(images[i]).addClass('out').css({
                    left: (width-$(images[i]).outerWidth(true)) + 'px'
                });
            } else {
                i !== 0 && $(images[i]).removeClass('out').css({
                    left: 0
                });
            }
        }

        if (x+images.first().width() <= width) imageWrapper.width(x+images.first().width());
        imageDiv.css('right', (-$(this).width()+images.first().width()) + 'px');

    }

});

0 个答案:

没有答案