やってること
- スタート
- 赤いボックスを下に移動
- 赤いボックスを右に移動
- 赤いボックスを上に移動
- 赤いボックスを左に移動
処理開始前とかjQuery.animateのcompleteでログを出力してもいいんだけど、ここすらもDeferredで出力させてみた
<style type="text/css">
#testOuter{
width:100%;
height:700px;
position:relative;
}
#testLog{
border:1px solid #cfcfcf;
background-color:#fff;
height:140px;
overflow-y:scroll;
}
#testBox{
width:300px;
height:250px;
background-color:#f00;
position: absolute;
top:200px;
left:0px;
}
</style>
<div id="testOuter">
<div id="testLog"></div>
<div id="testBox"></div>
</div>
<script type="text/javascript">
var log = function() {
var $log = $( '#testLog' );
return function( s ) {
$log.html( $log.html() + s + '<br>' );
}
}();
( function() {
log( 'Start' );
return new $.Deferred().resolve().promise();
} )()
.then( function() {
log( 'animate down' );
return new $.Deferred().resolve().promise();
} )
.then( function() {
var dfd = new $.Deferred;
$( '#testBox' ).animate( {'top':'460px'}, 3000, function() {
return dfd.resolve();
} );
return dfd.promise();
} )
.then( function() {
log( ' -> animated down' );
return new $.Deferred().resolve().promise();
} )
.then( function() {
log( 'animate right' );
return new $.Deferred().resolve().promise();
} )
.then( function() {
var dfd = new $.Deferred;
$( '#testBox' ).animate( {'left':'140px'}, 3000, function() {
return dfd.resolve();
} );
return dfd.promise();
} )
.then( function() {
log( ' -> animated right' );
return new $.Deferred().resolve().promise();
} )
.then( function() {
log( 'animate up' );
return new $.Deferred().resolve().promise();
} )
.then( function() {
var dfd = new $.Deferred;
$( '#testBox' ).animate( {'top':'220px'}, 5000, function() {
return dfd.resolve();
} );
return dfd.promise();
} )
.then( function() {
log( ' -> animated up' );
return new $.Deferred().resolve().promise();
} )
.then( function() {
log( 'animate left' );
return new $.Deferred().resolve().promise();
} )
.then( function() {
var dfd = new $.Deferred;
$( '#testBox' ).animate( {'left':'10px'}, 3000, function() {
return dfd.resolve();
} );
return dfd.promise();
} )
.then( function() {
log( ' -> animated left' );
return new $.Deferred().resolve().promise();
} )
.then( function() {
log( 'Fin' );
return new $.Deferred().resolve().promise();
} )
;
</script>
0 件のコメント:
コメントを投稿