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

回答編集履歴

1

コード追記

2020/02/25 02:22

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -1,4 +1,65 @@
1
1
  アニメーションしないのは、
2
2
  メニューの`onclick=""`内で`menu.style.display='none'`をしているからです。
3
3
  `display='none'`はOn/Offの2つの状態しかないのでアニメーションはしません。
4
- これを削除すればアニメーションするようになります。
4
+ これを削除すればアニメーションするようになります。
5
+
6
+ ---
7
+ 質問内容とは外れますが、
8
+ スクリプトをボタンは別箇所、メニューはインラインというように分けるのは管理上好ましくないです。
9
+ 同じ個所に統一して記述したほうが管理しやすいですよね。
10
+ また、どちらも同じ開閉処理なのでまとめて記述できます。
11
+
12
+ あと、Classの存在をチェックしていますが、`toggleClass`自体が存在チェックしてますので不要ですね。
13
+
14
+ CSSもインラインと混在してますが、これもCSSファイルにまとめて、HTMLはなるべくシンプルにした方がいいでしょう。
15
+
16
+ ```html
17
+ <input id="m" type="button" value="メニューを開く">
18
+
19
+ <div id="menu" class="boxp">
20
+ <div>コンテンツ1</div>
21
+ <div>コンテンツ2</div>
22
+ <div>コンテンツ3</div>
23
+ </div>
24
+ ```
25
+ ```css
26
+ .boxp{
27
+ opacity: 0;
28
+ width: 0%;
29
+ height: 70%;
30
+ bottom: 0%;
31
+ transition: 1s;
32
+ }
33
+ .boxp.on{
34
+ opacity: 1;
35
+ width: 100%;
36
+ height: 70%;
37
+ background-color: black;
38
+ bottom: 0%;
39
+ }
40
+ #menu {
41
+ position: fixed;
42
+ z-index: 1;
43
+ }
44
+ #menu>div {
45
+ float:left ;
46
+ width: 33%;
47
+ height: 100%;
48
+ }
49
+ #menu>div:nth-child(1) {
50
+ background-color:red;
51
+ }
52
+ #menu>div:nth-child(2) {
53
+ background-color:green;
54
+ }
55
+ #menu>div:nth-child(3) {
56
+ background-color:blue;
57
+ }
58
+ ```
59
+ ```jquery
60
+ $(document).ready(function () {
61
+ $("#m, #menu").on("click", function(){
62
+ $("#menu").toggleClass("on");
63
+ });
64
+ })
65
+ ```