首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TransitionEnd触发过快

TransitionEnd触发过快
EN

Stack Overflow用户
提问于 2013-01-30 06:13:12
回答 1查看 3.2K关注 0票数 1

我正在尝试使用jQuery和css过渡对一些动画进行排序。看起来容器的宽度应该是动画的,直到小部件完成从“顶部”css变化的过渡,但它们是一起触发的。

为什么

代码语言:javascript
复制
        widget.one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(i) {

            widget.css({'top': top});

            widget.one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(i) {

                container.css({'width': "19%"})

            });

        });

以与此相同的序列制作动画吗?

代码语言:javascript
复制
        widget.one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(i) {

            widget.css({'top': top});

        });

        widget.one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(i) {

            container.css({'width': "19%"})

        });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-30 06:33:58

在第一个示例中,您需要在添加transitionEnd事件之前设置css。我相信这就是你错的地方。

代码语言:javascript
复制
widget.css({
    'top': '200px'
}).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function (i) {

    widget.css({
        'top': '0px'
    }).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function (i) {

        container.css({
            'width': "300px"
        }).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function (i) {

            container.css({
                'width': "50px"
            }).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function (i) {

                widget.css({
                    'width': "400px"
                })

            });
        });

    });

});

只要在jQuery中使用one而不是on,就可以很好地链接转换。

查看此jsFiddle:

http://jsfiddle.net/gordyr/NSCd5/3/

我不确定您是否在做一些不同的事情,但希望这会有所帮助。

尽管就我个人而言,我会将其封装到一个帮助函数中,以避免编写太多特定于浏览器的代码……如下所示(未经过测试):

代码语言:javascript
复制
$.fn.transition = function(props, callback){
              $(this).css(props).one('webkitTransitionEnd otransitionend oTransitionEndmsTransitionEnd transitionend', function (i) {
                    if(typeof callback == 'function'){
                            callback();
                    }
              });
        return this;
});

如下所示:

代码语言:javascript
复制
$(element).transition({top:'0px'}, function(){
      $(this).transition({top:'100px'}, function(){
          $(this).transition({top:'400px'}, function(){
               //Do something else
          });
    });
});

当然,使用缓存的元素,而不是每次都使用$(this)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14593063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档