0

我有一个循环播放图像的幻灯片,然后在这些图像上方我有一些文本,然后是两个图像。我想要的是计算出我要为哪些图像制作动画并这样做,但是我希望在每个动画之间有一个延迟。

我的困难是我有 3 张幻灯片,每张幻灯片可以有 2 张图片需要单独动画到背景,幻灯片的排列是根据用户的喜好排列的,所以从前端的角度来看,我永远不可能100% 确定哪两个图像将被组合在一起,因此,我写了以下内容,

if($(".current .iphone").length) {
        $(".current .iphone").animate({
            opacity :   1,
            left    :   "840px"
        }, 800);
    }
    if($(".current .blackberry").length) {
        $(".current .blackberry").animate({
            opacity :   1,
            left    :   "1119px"
        }, 800);
    }
    if($(".current .samsung").length) {
        $(".current .samsung").animate({
            opacity :   1,
            left    :   "783px"
        }, 800);
    }
    if($(".current .htc").length) {
        $(".current .htc").animate({
            opacity :   1,
            left    :   "900px"
        }, 800);
    }
    if($(".current .nokia").length) {
        $(".current .nokia").animate({
            opacity :   1,
            left    :   "823px"
        }, 800);
    }
    if($(".current .nokia").length) {
        $(".current .nokia").animate({
            opacity :   1,
            left    :   "823px"
        }, 800);
    }

这是我的 HTML,

<div id="slideshow" role="main" style="position: relative; overflow: hidden; ">
        <section data-background="_/images/elements/parralex-1.jpg">
            <img src="_/images/iphone-blue.png" alt="iPhone mybunjee" class="iphone foreground phone" />
            <img src="_/images/blackberry-pink.png" alt="Blackberry mybunjee" class="blackberry background phone" />
        </section>
        <section data-background="http://www.samtordoffracing.com/wp-content/uploads/2012/07/Tordoff-14.jpg">
            <img src="_/images/iphone-blue.png" alt="iPhone mybunjee" class="iphone foreground phone" />
            <img src="_/images/blackberry-pink.png" alt="Blackberry mybunjee" class="blackberry background phone" />
        </section>
        <section data-background="http://www.samtordoffracing.com/wp-content/uploads/2012/07/Tordoff-14.jpg">
            <div class="samsung foreground"></div>
            <div class="nokia foreground"></div>
        </section>
    </div>

基本上我正在做的是试图找出当前幻灯片中存在哪些图像,然后制作动画,但是目前两个图像同时动画,我希望在一个图像被动画和然后下一个。

有没有更好的方法来做我正在做的事情?

4

2 回答 2

0

我不完全理解你想要做什么,但我改变了你的 jQuery 结构。

您需要为此操作定义触发/事件,例如hover()click()

使用它来减少代码:

$('.current').hover(function() {//mouse over event

    var currentClass = $(this).children().attr('class');//takes mouse overed element's chlid's class

    if($('.current .'+currentClass).length) {
            $(".current ."currentClass).animate({
                'opacity' :   '1',
                'left' : '840px'
            }, 800);
    }
});

如果您不想定义触发事件,可以使用each()方法和setInterval()进行定时动画。

于 2012-07-20T11:53:38.573 回答
0

您可以尝试以下方法:

     $.each($('#slideshow').find('img'), function(i, img){
            if($(img).hasClass('iphone')){
                setTimeout(
                    function(){
                        $(img).animate({
                            opacity : .5,
                            'margin-left' : "+=40px"
                        }, 800)
                    }, Math.random() * i *800);
            }
            if($(img).hasClass('blackberry')){
                setTimeout(
                    function(){
                        $(img).animate({
                            opacity : .5
                            'margin-left' : "-=40px"
                        }, 800)
                    }, Math.random() * i *800);
            }
    });

无论如何这里有一些例子,例如看这个

于 2012-07-20T14:22:18.583 回答