###前提・実現したいこと
.item
をfadeOutさせるとき、下の.box
が上にきます。
これをゆっくりと、1秒かけて上にもっていきたいです。
具体的に、以下の流れを目指したです。
クリック:.item
のfadeOutスタート & .box
を上にゆっくり移動するのスタート
↓1秒後
処理完了:.item
のfadeOut完了 & .box
の移動完了
###発生している問題
ゆっくりと上にもっていく方法がわかりません。
###該当のソースコード
html
1<div class="wrap"> 2 <div class="item"></div> 3 <div class="box"></div> 4</div> 5<button type="button" class="fadeOut">fadeOut</button> 6<button type="button" class="fadeIn">fadeIn</button>
css
1.wrap {width: 100%; height: 100px;} 2.item {background:skyblue; width: 100%; height: 50px;} 3.box {background: salmon; width: 100%; height: 50px;}
jQuery
1$('.fadeOut').click(function(){ 2 $('.item').fadeOut(1000); 3}); 4$('.fadeIn').click(function(){ 5 $('.item').fadeIn(1000); 6});
###試したこと
fadeOutが1000なので、CSSにtransitionとして1sを追加すれば、.box
が移動する時間はfadeOutと同じ時間でゆっくりになると思いました。(jQueryの1000 = CSSの1s = 1秒)
CSS
1.wrap {width: 100%; height: 100px;} 2.item {background:skyblue; width: 100%; height: 50px;} 3.box {background: salmon; width: 100%; height: 50px;} 4.box {transition: 1s;} /* transition を追加 */
そしてjQueryの方はクリック時にすぐにbox
が移動しはじめるように.item
にabsoluteをつけました。
$('.fadeOut').click(function(){ $('.item').fadeOut(1000); $('.item').css('position','absolute'); // .itemをabsoluteにして、下の.boxが fadeOut完了を待たずにすぐに上に移動しはじめるように追加 }); $('.fadeIn').click(function(){ $('.item').fadeIn(1000); $('.item').css('position','relative'); // 同じ意図で追加 });
以上の変更を加えても意図した動作が実現できませんでした。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/17 12:29
2021/02/18 00:23
2021/02/18 01:39
2021/02/18 01:52
2021/02/18 01:56