前提・実現したいこと
positionを使った理由
最初、高さを100vhに設定し、flexboxで上下に配置したのですが、
そうすると、画面全体をナビゲーションバーが覆ってしまい、スマホverの時に、中のコンテンツが何もclick出来ないという事態になってしまったので、
LOGOとmenuを、それぞれposition:fixedで設定しました。(ソースコード後述)
スマホバージョンにしたときは、menuだけが右下にくるので、
CSS
1@media (max-width: 667px) { 2 .global-navi .menu { 3 bottom: 0%; 4 right: 0%; 5 } 6}
にすればいいな、と思い上記のように設定しました。
起こっている問題
なぜか
効きません。
しかも、なぜか、全部試してみたのですが、この、スマホバージョンの、menuだけに効きません。
原因を探しましたが、今日は見つけることが、出来ませんでした。
苦肉の策で、原因は分からないまま、
CSS
1@media (max-width: 667px) { 2 .global-navi .menu { 3 top:80% 4 right: 0%; 5 } 6}
はきくので、今はこのようにしましたが、釈然としません。
高さを決めてないから、bottom では動かないのだろうかと思ったのですが、高さを設定してしまうと、中のコンテンツが押せなくなってしまう…と思いました。
HTML
1<header> 2 <nav class="global-navi"> 3 <div class="logo"> 4 <p>LOGO</p> 5 </div> 6 <div class="menu"> 7 <ul> ↓これは、ページ遷移のアニメーションです。 8 <li class="li"><a href="index.html" class="animsition-link">TOP</a></li> 9 <li class="li"><a href="commitment.html" class="animsition-link">COMMITMENT</a></li> 10 </ul> 11 </div> 12 </nav> 13 </header>
CSS
1/*---header---*/ 2/*---グローバルナビ---*/ 3header { 4 position: relative; 5 mix-blend-mode: multiply; 6 z-index: 2; 7} 8 9.global-navi { 10 display: none; 11 /*初期状態:非表示*/ 12} 13 14.global-navi .logo p { 15 font-size: 1.40625vw; 16 font-family: "playfair-display", serif; 17 font-style: normal; 18 font-weight: 900; 19 line-height: 1em; 20 color: #6d0d11; 21 padding: 2% 1%; 22 position: fixed; 23 top: 0%; ←自分の思い通りに、移動させられます 24 left: 0%; ←自分の思い通りに、移動させられます 25} 26 27@media (max-width: 667px) { 28 .global-navi .logo p { 29 font-size: 18px; 30 margin-top: 5%; 31 } 32} 33 34.global-navi .menu { 35 padding: 2% 3%; 36 position: fixed; 37 top: 0%; ←自分の思い通りに、移動させられます 38 right: 0%; ←自分の思い通りに、移動させられます 39} 40 41@media (max-width: 667px) { 42 .global-navi .menu { 43 top: 80%; ← ←自分の思い通りに、移動させられません 44 right: 0%; ←自分の思い通りに、移動させられます 45 } 46} 47 48.global-navi .menu a { 49 font-size: 20px; 50 font-family: "din-1451-lt-pro-engschrift", sans-serif; 51 font-style: normal; 52 font-weight: 400; 53 color: #eae2db; 54 line-height: 1.75em; 55 color: #6d0d11; 56 display: block; 57 -webkit-box-align: end; 58 -ms-flex-align: end; 59 align-items: flex-end; 60} 61 62@media (max-width: 667px) { 63 .global-navi .menu a { 64 font-size: 15px; 65 } 66}
試したこと
- ページ遷移の、JS側で何か起こっているのだろうか?と思い色々探したところ、
position: fixedが効かない場合の対処法
親要素のtransformを外せばokです。という記事を発見しました。
JSはこちらです。
JS
1 $(function(){ 2 //表示するスクロール量(px) 3 var scrollPoint = 600; 4 $(window).scroll(function(){ 5 if($(this).scrollTop() > scrollPoint){ 6 $('.global-navi').fadeIn(); 7 }else{ 8 $('.global-navi').fadeOut(); 9 } 10 }); 11}); 12
なので、試しに
CSS
1@media (max-width: 667px) { 2 .global-navi .menu ul { 3 bottom: 0%; 4 right: 0%; 5 -webkit-transform: none !important; 6 transform: none !important; 7 } 8}
としてみました。⇒失敗しました。
- topもぜろにする必要があるような記事を発見したので、そうしてみました。
CSS
1@media (max-width: 667px) { 2 .global-navi .menu { 3 top: 0%; 4 bottom: 0%; 5 right: 0%; 6 } 7}
⇒失敗しました。
- ulまで指定して、詳細度を上げる必要があるのだろうか、と思いました
CSS
1@media (max-width: 667px) { 2 .global-navi .menu ul { 3 top: 0%; 4 bottom: 0%; 5 right: 0%; 6 } 7}
⇒失敗しました。
そのまま、top 80%のままなら、動くっちゃ動くのですが
どうして、こうなったのか、分かりません…おそらく何か、勉強不足のものが、ありそうな…
top 80%にするのが正解なのでしょうか?高さを設定できないパターンだから、という理由で。
だとしたらしょうがないからこれが正解、ということでしょうか?
お忙しいところ、大変恐縮ですが、何かヒントを頂けましたら幸いです。
宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/26 00:34
2021/01/26 04:49
2021/01/26 06:34
2021/01/26 06:39
2021/01/26 06:58
2021/01/26 09:19