动画元素jquery

时间:2012-07-20 11:37:21

标签: javascript jquery html animated

我有一个幻灯片放映循环图像,然后在这些图像上面我有一些文字,然后是两个图像。我想要的是找出我试图制作动画的图像,但是我希望每个动画之间都有延迟。

我的困难在于我有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>

基本上我正在做的是尝试找出当前幻灯片中存在哪些图像,然后设置动画,然而当前这两个图像同时生成动画,并且我希望在一个图像被动画之间有一个随机延迟然后是下一个。

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

2 个答案:

答案 0 :(得分:0)

我不完全明白你想做什么,但我改变了你的jQuery结构。

您需要为此操作定义trrigger /事件,例如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()进行定时动画。

答案 1 :(得分: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);
            }
    });

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