前提・実現したいこと
cssでトグルナビを作り、クリックでフルスクリーンメニューが表示されるようにしました。
しかし、スクロールすると画面いっぱいに表示設定しているはずの背景色が途切れてしまいます。
スクロールしても背景色が途切れず、下の要素が見えないようにするにはどうしたらいいでしょうか?
該当のソースコード
HTML
<nav class="menu"> <div class="strokes"></div> <div class="strokes"></div> <div class="strokes"></div> </nav> <div class="fullscreenmenu"> <div class="list-box"> <ul> <li>タイトル</li> <li>テスト</li> </ul> <ul> <li>タイトル</li> <li>テスト</li> </ul> <ul> <li>タイトル</li> <li>テスト</li> </ul> </div> </div> <main> <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> </main> <script src="https://cdn.jsdelivr.net/jquery/1.12.4/jquery.min.js"></script>
css
nav.menu{ position:absolute; width: 80px; height: 80px; top: 0; right: 0; margin: 0; cursor: pointer; background:#45454a; z-index: 9999; } nav.menu div.strokes { width: 40%; height: 4px; margin: 7px auto 7px auto; background: white; border-radius: 10px; transition: transform 0.3s, opacity 0.1s; } nav.menu div.strokes:first-child { margin-top: 28px; } .hide{ opacity: 0; transform: translateX(-42px); } .animate0{ transform: translateY(13px) rotate(45deg); } .animate2{ transform: translateY(-10px) rotate(-45deg); } .fullscreenmenu{ background-color: rgba(0, 93, 90, 0); top: 0; left: 0; width: 100%; height: 100vh; position: absolute; opacity: 0; -webkit-transition: background 0.5s ease-in-out, opacity 0.5s; -moz-transition: background 0.5s ease-in-out, opacity 0.5s; -ms-transition: background 0.5s ease-in-out, opacity 0.5s; -o-transition: background 0.5s ease-in-out, opacity 0.5s; transition: background 0.5s ease-in-out, opacity 0.5s; text-align: center; pointer-events: none; } .fullscreenmenu.show{ height: 100vh !important; opacity: 1; background-color: rgba(69,69,74, 1); -webkit-transition: background 0.5s ease-in-out, visibility 0.5s; -moz-transition: background 0.5s ease-in-out, visibility 0.5s; -ms-transition: background 0.5s ease-in-out, visibility 0.5s; -o-transition: background 0.5s ease-in-out, visibility 0.5s; transition: background 0.5s ease-in-out, visibility 0.5s; z-index: 9998; pointer-events: auto; overflow-y: scroll; } .list-box { display: flex; flex-direction: row; justify-content: center; align-items: center; box-sizing: border-box; width: 100%; height: 100vh; } .list-box ul { height: 250px; padding: 0 20px; }
JavaScript
(function () { "use strict"; var fullscreenmenu = document.querySelector(".fullscreenmenu"); var strokes = document.querySelectorAll(".strokes"), icon = document.querySelector(".menu"), fullscreenmenu = document.querySelector(".fullscreenmenu"); function transformStart() { strokes[0].classList.toggle("animate0") strokes[1].classList.toggle("hide"); strokes[2].classList.toggle("animate2"); fullscreenmenu.classList.toggle("show"); } icon.addEventListener("click", transformStart); })();
試したこと
・100vhに!importantを設定(変化なし)
・z-indexの数値を変更(変化なし)
100vhにしているはずなのになぜ途切れてしまうのかがわかりません…
まだ回答がついていません
会員登録して回答してみよう