动画,然后用渐变效果替换div类



JSFiddle: Fiddle

它的工作方式如下:

1 -红色方块从上到下滑动
2 -完成后,红色框淡出
3 -然后蓝框fadeIn

下面是html:

<div class="posRel">
    <div class="trans1"></div>
    <div class="trans2"></div>
    <div class="trans3"></div>
    <div class="trans4"></div>
    <div class="trans5"></div>
    <div class="trans6"></div>
    <div class="trans7"></div>
</div>

下面是js:

    for (i = 1; i <= 7; i++) {
        $('.trans' + i).toggleClass('toggle');
    }
    setTimeout(function () {
        $('.toggle').fadeOut('slow', function () {
            $(this).addClass('fSmall1').fadeIn('slow');
        });
    }, 2000);

项目链接:http://50.87.144.37/~projtest/team/design/EO/page-2.html

链接到JSFiddle

我所面临的问题:

  • fadeOut和fadeIn不工作
  • 还有什么比settimeout更好的方法吗?

当涉及到js/jQuery时,我相当缺乏经验,所以请随意指出任何愚蠢的错误。谢谢。

我已经使用了淡出属性,尝试链接。http://jsfiddle.net/zcYLM/10/

[http://jsfiddle.net/zcYLM/10/][1]

  [1]: http://jsfiddle.net/zcYLM/10/

如果您正在使用jQueryUI,这将工作:

http://jsfiddle.net/zcYLM/11/(这是一个更新)

这是你的问题的一个基本的、简化的例子,但是你可以把它应用到你的代码中。

JS:

$(document).ready(function() {
    $('div[class*=trans]')
        .toggleClass('toggle', 2000)
        .promise()
        .done(function() {
            $(this)
                .fadeOut(2000)
                .promise()
                .done(function() { 
                    $(this)
                        .addClass('blue')
                        .fadeIn(2000);
                });
        });
});
CSS:

.posRel {
    position:relative;
}
div.posRel > div {
    background-color:red;
    position:absolute;
    top:0px;
    width:100px;
    height:100px;
}
div.posRel > div.trans1 { left:-50px; }
div.posRel > div.trans1.toggle { left:100px; top:150px; }
div.posRel > div.blue { background-color:blue; }

我会尝试一次性解决你的大部分问题,但我怀疑我们可能需要一些来回才能完全解决它。

首先,你的淡入/淡出问题与你的动画被触发的方式有关。你实际上是在每个元素上分别调用淡出,然后再调用淡入,但是从你在需求中描述的功能来看,你应该在容器上触发一个淡出:

for (i = 1; i <= 7; i++) {
    $('.trans' + i).toggleClass('toggle');
}
setTimeout(function () {
    $('.posRel').fadeOut('slow', function () {
        $('.toggle').addClass('fSmall1');
        $('.posRel').fadeIn('slow');
    });
}, 2000);

小提琴

平稳过渡

如果你想有一个平滑的淡出,没有闪烁,然后回来,你可以使用fadeTo()方法代替。下面是一个FadeTo()的例子,这将使所有的形状下降,暂停几分之一秒,然后改变颜色。现在您可以尝试删除setTimeout,因为fadeTo控制动画时间,但我让它尽可能接近原始值。

for (i = 1; i <= 7; i++) {
    $('.trans' + i).toggleClass('toggle');
}
setTimeout(function () {
    $('.posRel').fadeTo('slow', 2, function () {$('.toggle').addClass('fSmall1');});
}, 2000);

fadeTo()示例Fiddle

相关内容

  • 没有找到相关文章

最新更新