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

回答編集履歴

2

別の解決方法を追加

2020/03/03 01:23

投稿

KimTom
KimTom

スコア134

answer CHANGED
@@ -10,4 +10,37 @@
10
10
  display: none;
11
11
  }
12
12
  }
13
- ```
13
+ ```
14
+
15
+ 【追記】
16
+ `#nav`に対して`display: none !important;`が効かない状態とのこと。
17
+ おそらくjs側を修正する必要がありますがCSSで強引に表示を消すスタイルを書いておきます。
18
+
19
+ ```CSS
20
+ @media screen and (max-width:800px) {
21
+ #nav, #nav *, .com, .snav {
22
+ display: none !important;
23
+ position: fixed !important;
24
+ top: -100% !important;
25
+ left: -100% !important;
26
+ z-index: -100 !important;
27
+ float: left !important;
28
+ }
29
+ }
30
+ ```
31
+ ■意味
32
+ 「#navのdisplayプロパティが変更できない」ということがわかったので、より広範囲にスタイルを強引に変更する方法を取りました。
33
+ 行ったのは以下の2点。
34
+ 0. `#nav`以外にもスタイルを当てる
35
+ 0. displayプロパティ以外のプロパティで表示を消すスタイルを追加する
36
+
37
+ CSSの解説をすると、
38
+ `#nav, #nav *, .com, .snav`…スタイルを当てる要素(=表示を消したい要素)
39
+ ⇒ `#nav`:消したい要素(本当はこれだけ消したい)
40
+ ⇒ `#nav *`:`#nav`の中にある全ての要素(*はすべての要素を意味する)
41
+ ⇒ `.com`と`.snav`:消したい要素の中の主要な要素
42
+
43
+ `display: none !important;`:要素を非表示にする(本当はこれだけ適用したい)
44
+ ⇒ `!important`というのは「他のスタイルの優先順位を無視してこのスタイルを最優先で適用する」という宣言。後から修正する際に混乱を招く恐れがあるため本来は使用を控えなければいけない。
45
+
46
+ それ以外のプロパティは調べてみてください。

1

文言を一部修正

2020/03/03 01:23

投稿

KimTom
KimTom

スコア134

answer CHANGED
@@ -1,6 +1,8 @@
1
1
  ウィンドウの幅で要素の表示・非表示を切り替えたい場合はjsよりCSSで対応する方がシンプルに解決できるかもしれません。
2
- いちいちウィンドウ幅を取得するコードを書く必要もないのでシンプルです。
2
+ いちいちウィンドウ幅を取得するコードを書く必要もないので手っ取り早いと思います。
3
3
 
4
+ 以下のスタイルをCSSファイルの最下部に追加してみてください。
5
+
4
6
  ```css
5
7
  @media screen and (max-width:800px) {
6
8
  /* 非表示にしたい要素のクラスなどを指定 */