如果只有3张图片,jQuery Carousel(CarouFredSel)会停止动画

时间:2013-10-14 12:51:20

标签: jquery if-statement carousel caroufredsel

好的,问题稍微复杂一点。我的页面上有一个旋转木马(使用CarouFredSel插件),有时这个旋转木马会有3个图像,有时4个或更多。旋转木马设置为一次显示3个图像,中心图像较大。

我的问题是,如果我只有3张图像,我不能左右滑动旋转木马以使相邻图像居中(因此更大)。为了解决这个问题,我添加了一个虚拟图像(即只写<img src="" />,因此滑块认为有4个图像,这允许我滑动,但是,我希望能够在到达第4个之前停止滑块。虚拟'图像。

我的HTML如下:

<div id="wrapper">
        <div id="carousel">
            <img src="http://www.samskirrow.com/client-kateguest/wp-content/uploads/2013/09/Christmas.jpg" />
            <img src="http://www.samskirrow.com/client-kateguest/wp-content/uploads/2013/09/Birds.jpg" />
            <img src="http://www.samskirrow.com/client-kateguest/wp-content/uploads/2013/09/christmas_alt2.jpg" />
            <img src="" />

        </div>
            <a id="prev2" class="prev" href="#">&lt;</a>
            <a id="next2" class="next" href="#">&gt;</a>
    </div>

和滑块插件的jQuery:

$(function() {

            var _center = {
                width: 275,
                height: 390,
                marginLeft: 0,
                marginTop: 0,
                marginRight: 0
            };
            var _left = {
                width: 140,
                height: 200,
                marginLeft: 0,
                marginTop: 100,
                marginRight: 20
            };
            var _right = {
                width: 140,
                height: 200,
                marginLeft: 20,
                marginTop: 100,
                marginRight: 0
            };
            var _outLeft = {
                width: 100,
                height: 100,
                marginLeft: 150,
                marginTop: 200,
                marginRight: -150
            };
            var _outRight = {
                width: 100,
                height: 100,
                marginLeft: 0,
                marginTop: 200,
                marginRight: 0
            };
            $('#carousel').carouFredSel({
                auto: false,
                prev: {
                    button: "#prev2",
                    key: "left"
                },
                swipe: true,
                width: 597, 
                height: 392,
                align: false,
                items: {
                    visible: 3,
                    width: 100
                },

                next: {
                    button: "#next2",
                    key: "right",
                    items: 1,
                    duration: 400,
                    onBefore: function( data ) {
                        data.items.old.eq( 0 ).animate(_outLeft);
                        data.items.visible.eq( 0 ).animate(_left).removeClass('center right').addClass('left');
                        data.items.visible.eq( 1 ).animate(_center).addClass('center').removeClass('right left');
                        data.items.visible.eq( 2 ).animate(_right).css({ zIndex: 1 }).removeClass('left center').addClass('right');
                        data.items.visible.eq( 2 ).next().css(_outRight).css({ zIndex: 0 });

                        setTimeout(function() {
                            data.items.old.eq( 0 ).css({ zIndex: 1 });
                            data.items.visible.eq( 0 ).css({ zIndex: 2 });
                            data.items.visible.eq( 1 ).css({ zIndex: 3 });
                            data.items.visible.eq( 2 ).css({ zIndex: 2 });
                        }, 200);
                    }
                },
                prev: {
                    button: "#prev2",
                    key: "left",
                    items: 1,
                    duration: 400,
                    onBefore: function( data ) {
                        data.items.old.eq( 2 ).animate(_outRight);
                        data.items.visible.eq( 0 ).animate(_left).css({ zIndex: 1 }).removeClass('center right').addClass('left');
                        data.items.visible.eq( 0 ).prev().css(_outLeft).css({ zIndex: 0 });
                        data.items.visible.eq( 1 ).animate(_center).addClass('center').removeClass('right left');
                        data.items.visible.eq( 2 ).animate(_right).removeClass('left center').addClass('right');

                        setTimeout(function() {
                            data.items.old.eq( 2 ).css({ zIndex: 1 });
                            data.items.visible.eq( 2 ).css({ zIndex: 2 });
                            data.items.visible.eq( 1 ).css({ zIndex: 3 });
                            data.items.visible.eq( 0 ).css({ zIndex: 2 });
                        }, 200);
                    }
                }
            });
            $('#carousel').children().eq( 0 ).css(_left).css({ zIndex: 2 }).addClass('left').removeClass('center right');
            $('#carousel').children().eq( 1 ).css(_center).css({ zIndex: 3 }).addClass('center').removeClass('right left');
            $('#carousel').children().eq( 2 ).css(_right).css({ zIndex: 2 }).addClass('right').removeClass('center left');
            $('#carousel').children().eq( 3 ).css(_outRight).css({ zIndex: 1 });
            $('#carousel').children().eq( 4 ).css(_outLeft).css({ zIndex: 1 });

        });

这是一个JSFiddle,所以你可以看到我的意思:http://jsfiddle.net/hvZzc/1/

1 个答案:

答案 0 :(得分:2)

您需要在代码中添加最小值:

“最小值:数量创建旋转木马所需的最小项目数。 如果为null,则items.visible的数字将被继承并增加1.“(来自他们的website

将该标记添加到您的代码中,这个标记将如下所示:

            items: {
                visible: 3,
                minimum: 3,
                width: 100
            },

而不是:

            items: {
                visible: 3,
                width: 100
            },

http://jsfiddle.net/hvZzc/2/