回答編集履歴

1

説明変更

2020/04/21 00:25

投稿

hatena19
hatena19

スコア33761

test CHANGED
@@ -1,47 +1,73 @@
1
- 不通考えれば、fadeOut 加すばいいかと思いますが
1
+ **※質問HTML CSS が記さたので回答を全面的に変更。**
2
+
3
+
4
+
5
+ CSSをみると、display の block と none の切り替えで表示/非表示にしてますが、これだとアニメーションにはなりません。まずは、これを削除します。
6
+
7
+
8
+
9
+ ```css
10
+
11
+ .list.open {
12
+
13
+ display: block;
14
+
15
+ }
16
+
17
+
18
+
19
+ .list.close {
20
+
21
+ display: none;
22
+
23
+ }
24
+
25
+ ```
26
+
27
+ .list をフェイドイン、フェイドアウトさせるだけなら、jQuery のfadeIn fadeOut だけでOKです。
2
28
 
3
29
 
4
30
 
5
31
  ```js
6
32
 
7
- $(function () {
33
+ $(function() {
8
34
 
9
- $(".nav-button").on("click", function () {
35
+ $(".nav-button").on("click", function() {
10
36
 
11
- if ($(this).hasClass("active")) {
37
+ if ($(this).hasClass("active")){
12
38
 
13
- $(this).removeClass("active");
39
+ $(this).removeClass("active");
14
40
 
15
- $(".list")
41
+ $(".list").fadeOut( 1000 );
16
42
 
17
- .addClass("close")
43
+ } else {
18
44
 
19
- .removeClass("open")
45
+ $(this).addClass("active");
20
46
 
21
- .fadeOut(200);
47
+ $(".list").fadeIn( 1000 );
22
48
 
23
- } else {
49
+ }
24
50
 
25
- $(this).addClass("active");
26
-
27
- $(".list")
28
-
29
- .hide()
30
-
31
- .addClass("open")
32
-
33
- .removeClass("close")
34
-
35
- .fadeIn(200);
36
-
37
- }
38
-
39
- });
51
+ });
40
52
 
41
53
  });
42
54
 
43
55
  ```
44
56
 
57
+ さらにいえば、toggleClass fadeToggle を使えばif分岐も不要です。
45
58
 
59
+ ```js
46
60
 
61
+ $(function() {
62
+
63
+ $(".nav-button").on("click", function() {
64
+
47
- これでうまくいかないなら、現状のHTMLとCSSを質問文に追加してください。
65
+ $(this).toggleClass("active");
66
+
67
+ $(".list").fadeToggle( 1000 );
68
+
69
+ });
70
+
71
+ });
72
+
73
+ ```