【menuQ.html】 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="menuQ.css"> <script src="menuQ.js"></script><!-- 共通化メニューを読込む --> </head> <body> <header> <input type="checkbox" name="navToggle" id="navToggle"> <label for="navToggle" class="btn-burger"> <span class="icon"></span> </label> <nav id="qnav"></nav> <script> document.getElementById('qnav').insertAdjacentHTML('beforeend', menutxt); </script> </header> <main>メイン</main> <footer>footer</footer> </body> </html> 【menuQ.js】 let menutxt =" <ul class='nav-list'>"; menutxt +=" <li><a href='#'>menu 1</a></li>"; menutxt +=" <li><a href='#'>menu 2</a></li>"; menutxt +=" <li><a href='#'>menu 3</a></li>"; menutxt +=" <li><a href='#'>menu 4</a></li>"; menutxt +=" <li><a href='#'>menu 5</a></li>"; menutxt +=" </ul>"; 【menuQ.css】 .btn-burger { /*ハンバーガーボタン */ background-color:#eee; cursor: pointer; display:block; width:56px; height:60px; position: absolute; top:5px; right:10px; z-index:10; } .icon, .icon:before, .icon:after { /*ハンバーガー 三本線 */ position:absolute; top:0; bottom:0; margin: auto; right:0; left:0; height:4px; width:35px; background-color:#444; border-radius: 2px; display:block; content:''; cursor:pointer; } /*三本線の間隔 */ .icon:before { top: 16px; } .icon:after { top: -26px; } #navToggle { display:none; } /* チェックボックス非表示 */ /* チェックをクリックしたら */ #navToggle:checked ~ .btn-burger .icon { background: transparent; } #navToggle:checked ~ .btn-burger .icon:before { transform: rotate(-45deg); top: 0; } #navToggle:checked ~ .btn-burger .icon:after { transform: rotate(45deg); top: 0; } .icon, .icon:before, .icon:after { transition: all .8s; } #qnav { /* メニューの中身 */ position: fixed; width: 30%; overflow: hidden; transform: translateX(-50vw); transition: 1s; z-index: 1; } .nav-list { background-color: #5c55e7; list-style: none; margin: 0; padding-left: 20px; } .nav-list li { margin: 0; padding: 8px; } .nav-list a { display: block; text-decoration: none; color: #fff; } #navToggle:checked ~ #qnav { transform: translateX(8px) ; } main{ height: calc(100vh - 45px ); background-color: #efe;} @media screen and (min-width: 768px) { .btn-burger { display: none; } /* ハンバーガーは不使用 */ #qnav { width: 80%; margin: 0 auto; position:relative; transform:translateX(0); } .nav-list { display: flex; justify-content: center; align-items: center; height: 50px; } .nav-list li:not(:last-child) { border-right: 1px solid #fff; } .nav-list a {width: 100px; text-align: center; } main{ height: calc(100vh - 94px ); } }