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

回答編集履歴

1

説明変更

2020/04/21 00:25

投稿

hatena19
hatena19

スコア34367

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