実現したいこと
PC画面でメガメニューを使いたくて下記を参照しました。
https://www.rectus.co.jp/sample/responsive-navigation-only-css/mega2.html
メガメニューは出来たものの、レスポンシブ時のハンバーガーメニューが固定(追従)されません。
発生している問題・分からないこと
#navi #navibtnのposition: absolute;をいろいろ変えてみましたが、スクロールで追従してこなくて困っています。
該当のソースコード
https://codepen.io/MayMayMayMay/pen/gbLmwgy
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
CopilotやChatGPTに何度も聞きましたが、どんどんおかしくなっていくので、こちらでお尋ねする次第です。
どうぞよろしくお願いいたします!
補足
特になし
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答3件
0
</body> </html><h1 id="bg">SAMPLE</h1> <main> <section id="submenu001" style="height: 500px;"> <h2>Submenu001</h2> <p>ここはSubmenu001のセクションです。アンカーリンクで移動するとここに飛びます。</p> </section> <section id="submenu002" style="height: 500px; background-color: #f0f0f0;"> <h2>Submenu002</h2> <p>ここはSubmenu002のセクションです。</p> </section> <section id="submenu003" style="height: 500px;"> <h2>Submenu003</h2> <p>ここはSubmenu003のセクションです。ハンバーガーメニューを開いてみてください。</p> </section> </main> <footer> <small>Copyright © <span id="current-year"></span> SAMPLE</small> </footer> <script src="script.js"></script>
投稿2026/05/20 06:14
総合スコア22
0
もしどうしても古いブラウザの対応が必要でstickyが使えないという場合は、JavaScriptで制御する方法もあります。ざっくり言うと、スクロールイベントを監視しておいて、スクロール位置がヘッダーのオフセットトップを超えたら、ヘッダーにfixed-navみたいなクラスを追加して、そのクラスにposition: fixedとtop: 0を指定してやればOKです。ただこの方法だと、ヘッダーが固定されたときに下のコンテンツが隠れちゃうので、ヘッダーの高さ分だけマージンを追加するのを忘れないでください。
でもまあ、パフォーマンスもいいし実装もラクなposition: stickyでの解決が間違いないと思います。ぜひ試してみてください。それでもうまくいかないときは、また教えてくださいね。
投稿2026/05/19 02:54
総合スコア22
0
ベストアンサー
で、一番簡単で確実な解決方法としては、position: stickyを使うことです。具体的には、CSSのheaderセレクタに「position: sticky; top: 0; z-index: 1000;」を追加してあげるだけで、ヘッダー全体がスクロールしたときに画面上端にピタッと貼り付くようになります。もっと限定したいなら、#naviセレクタの方に同じ設定を書いてもOKです。ここで大事なのは、stickyを使うときは必ずtopやbottomの値を指定しないと動かないということと、z-indexで他のコンテンツより前に出してあげないと、スクロールしたときにテキストがヘッダーの下から透けて見えちゃうので注意が必要です。
投稿2026/05/19 02:51
総合スコア22
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。