前提・実現したいこと
疑似的なプログレスバーを実装しています。
- AJAX通信開始時にバーを80%まで伸ばして
- AJAXのレスポンスがあればバーを100%に伸ばして
- opacity:0; にして消す
というだけのバーです。
発生している問題
上記2と3が同時に実行されてしまいます。該当のソースコードにおける、animate の引数として渡した function が、実行直後に処理されないという状況かと思います。
該当のソースコード
HTML
1<div class="bar"></div>
CSS
1.bar { 2 height: 0.5rem; 3 background: red; 4 width: 0; 5 position: fixed; 6 inset: 0 0 auto 0; 7 z-index: 100; 8 transition: 2s; 9}
jQuery
1var start = function(){ 2 // 1. AJAX通信開始時にバーを80%まで伸ばして 3 $('.bar').css({width:0,opacity:1}); 4 $('.bar').stop().animate( {width:'80%'}, 1000 ); 5} 6var end = function(){ 7 // 2. AJAXのレスポンスがあればバーを100%に伸ばして 8 $('.bar').stop().animate( {width:'100%'}, 10, function(){ 9 // 3. opacity:0; にして消す 10 $(this).css({opacity:0}); 11 }); 12}
試したこと
他の記述を試してみたり、
jQuery
1 // 3. opacity:0; にして消す 2 $(this).css('opacity',0);
クラス付与にしてみたり試しても変わらず、やはり2と3が同時に実行されてしまいます。
jQuery
1 // 3. opacity:0; にして消す 2 $(this).addClass('is_opacity0');

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/02/19 12:30 編集
2022/02/19 12:37 編集
2022/02/19 13:12
2022/02/19 13:16 編集
2022/02/19 13:17
2022/02/19 13:21 編集
2022/02/19 13:38