teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2016/11/11 03:27

投稿

yambejp
yambejp

スコア117877

answer CHANGED
@@ -1,2 +1,62 @@
1
1
  具体的なanimate処理のトリガーと実行を例示してください
2
- またスピードはミリ秒単位で指示してください
2
+ またスピードはミリ秒単位で指示してください
3
+
4
+ #追記
5
+ 以下、一定時間waitをかけるサンプルを提示します。
6
+ わかりやすいようにトリガーになるdivに色をつけてあります。
7
+ 赤いボタンを押すと水色に変わり水色の間はボタンを押せません。
8
+ 一定時間立つと水色から赤に戻ります。
9
+ speed(ミリ秒)とratio(経過した比率)でスピードは調整してください
10
+
11
+ ```HTML
12
+ <style type="text/css">
13
+ #button {
14
+ float: left;
15
+ background-color: red;
16
+ height: 50px;
17
+ width: 50px;
18
+ }
19
+ #ani {
20
+ float: left;
21
+ background-color: silver;
22
+ height: 50px;
23
+ width: 500px;
24
+ }
25
+ </style>
26
+ <script src="js/jquery.js"></script> <!--ライブラリは適当に-->
27
+ <script>
28
+ $(function(){
29
+ var speed=1000;
30
+ var ratio=0.8;
31
+ var flg=true;
32
+ $('#button').on('click',function(){
33
+ if(flg==false) return false;
34
+ $.when(
35
+ setTimeout(function(){
36
+ $('#ani').animate( { width: 'toggle',}, { duration: speed, easing: 'swing', } );
37
+ $('#button').css({"background-Color":"aqua"});
38
+ flg=false;
39
+ },0),
40
+ wait(speed*ratio))
41
+ .done(
42
+ function(){
43
+ flg=true;
44
+ $('#button').css({"background-Color":"red"})
45
+ }
46
+ )
47
+ });
48
+ });
49
+ function wait(speed) {
50
+ var d = $.Deferred();
51
+ setTimeout(function(){d.resolve();}, speed);
52
+ return d.promise();
53
+ }
54
+ </script>
55
+ <div id="button"></div>
56
+ <div id="ani" style="display: block;"></div>
57
+ <div style="clear: both;"></div>
58
+
59
+ ```
60
+ ただしanimateが終わる前にwait処理が終わるので
61
+ 徐々にボタンが押せるタイミングが速くなってきます
62
+ 仕様は悩みどころですね・・・