PCからの閲覧時に、左側に縦に並ぶインデックスを、
width800以下で表示をさせないようにしたいと思っています。
現在は、
JavaScript
1if (!navigator.userAgent.match(/(iPhone|Android)/)) { 2function A { } 3function B { } 4function C { } 5} 6function Header { } 7function Footer { }
となっていて、
iPhoneとAndroidからは
function A~Cまで(画面横に出るインデックス)は表示させず、
headerとfooterのみ表示させるようになっています。
これを、width800で区切りたくて、
JavaScript
1if (window.matchMedia('(max-width: 800px)').matches) { 2 } else if (window.matchMedia('(min-width:801px)').matches) { 3function A { } 4function B { } 5function C { } 6} 7function Header { } 8function Footer { }
としました。PCの画面リサイズでは反映が確認出来ましたが、
ipad miniでは、A~Cが出てきてしまいます。
どこが間違っているのでしょうか。
また、最後に
JavaScript
1 window.onload = switchByWidth; 2 window.onresize = switchByWidth;
をつけてみたのですが、リロードしないと反映されません。
ブラウザの幅を変えただけで反映するようにするにはどうしたらいいでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/02/28 02:46
2020/02/28 04:14 編集
退会済みユーザー
2020/02/28 05:17
2020/02/28 05:25
回答2件
0
ベストアンサー
ウィンドウの幅で要素の表示・非表示を切り替えたい場合はjsよりCSSで対応する方がシンプルに解決できるかもしれません。
いちいちウィンドウ幅を取得するコードを書く必要もないので手っ取り早いと思います。
以下のスタイルをCSSファイルの最下部に追加してみてください。
css
1@media screen and (max-width:800px) { 2 /* 非表示にしたい要素のクラスなどを指定 */ 3 .sample { 4 display: none; 5 } 6}
【追記】
#nav
に対してdisplay: none !important;
が効かない状態とのこと。
おそらくjs側を修正する必要がありますがCSSで強引に表示を消すスタイルを書いておきます。
CSS
1@media screen and (max-width:800px) { 2 #nav, #nav *, .com, .snav { 3 display: none !important; 4 position: fixed !important; 5 top: -100% !important; 6 left: -100% !important; 7 z-index: -100 !important; 8 float: left !important; 9 } 10}
■意味
「#navのdisplayプロパティが変更できない」ということがわかったので、より広範囲にスタイルを強引に変更する方法を取りました。
行ったのは以下の2点。
0. #nav
以外にもスタイルを当てる
0. displayプロパティ以外のプロパティで表示を消すスタイルを追加する
CSSの解説をすると、
#nav, #nav *, .com, .snav
…スタイルを当てる要素(=表示を消したい要素)
⇒ #nav
:消したい要素(本当はこれだけ消したい)
⇒ #nav *
:#nav
の中にある全ての要素(*はすべての要素を意味する)
⇒ .com
と.snav
:消したい要素の中の主要な要素
display: none !important;
:要素を非表示にする(本当はこれだけ適用したい)
⇒ !important
というのは「他のスタイルの優先順位を無視してこのスタイルを最優先で適用する」という宣言。後から修正する際に混乱を招く恐れがあるため本来は使用を控えなければいけない。
それ以外のプロパティは調べてみてください。
投稿2020/02/28 05:28
編集2020/03/03 01:23総合スコア134
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/02/28 05:52 編集
退会済みユーザー
2020/02/28 06:11
2020/02/28 06:29 編集
退会済みユーザー
2020/02/28 06:42
2020/02/28 06:57
退会済みユーザー
2020/02/28 07:39
2020/02/28 07:58
退会済みユーザー
2020/02/28 08:10
2020/02/28 08:35
退会済みユーザー
2020/02/28 09:01
2020/02/28 09:20
退会済みユーザー
2020/02/28 10:37
2020/02/28 13:30
退会済みユーザー
2020/03/02 05:58
退会済みユーザー
2020/03/02 06:01
2020/03/02 06:10
退会済みユーザー
2020/03/02 06:34
2020/03/02 06:51
退会済みユーザー
2020/03/02 07:06
退会済みユーザー
2020/03/02 07:08
2020/03/02 07:16
退会済みユーザー
2020/03/02 07:22
2020/03/02 07:26
退会済みユーザー
2020/03/02 07:26
退会済みユーザー
2020/03/02 07:27
2020/03/02 07:35
退会済みユーザー
2020/03/02 07:38
2020/03/02 08:01
2020/03/02 08:06
退会済みユーザー
2020/03/02 08:20
退会済みユーザー
2020/03/02 08:24
退会済みユーザー
2020/03/02 08:33
退会済みユーザー
2020/03/02 08:39
2020/03/02 08:46
退会済みユーザー
2020/03/02 08:49
2020/03/02 09:07 編集
退会済みユーザー
2020/03/03 00:44
退会済みユーザー
2020/03/03 01:16
2020/03/03 01:25 編集
退会済みユーザー
2020/03/03 02:05
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。