前提・実現したいこと
ハンバーガーメニューを閉じる×印をCSSのみで作りたい。
発生している問題・エラーメッセージ
ハンバーガーメニューの閉じる×印の作り方がわからない。
該当のソースコード
HTML
1<div id="nav-drawer"> 2 <input id="nav-input" type="checkbox" class="nav-unshown"> 3 <label id="nav-open" for="nav-input"><span></span></label> 4 <label class="nav-unshown" id="nav-close" for="nav-input"></label> 5 <div id="nav-content"> 6 <ul> 7 <li>Skill</li> 8 <li>About</li> 9 <li>Contact</li> 10 </ul> 11 </div> 12 </div>
CSS
1#nav-drawer{ 2 position: relative; 3 padding-right: 35px; 4 padding-top: 20px; 5} 6 7.nav-unshown { 8 display: none; 9} 10 11#nav-open { 12 display: inline-block; 13 width: 30px; 14 height: 22px; 15 vertical-align: middle; 16} 17 18#nav-open span, #nav-open span:before,#nav-open span:after { 19 position: absolute; 20 height: 3px; 21 width: 20px; 22 border-radius: 3px; 23 background: #5F2201; 24 display: block; 25 content: ''; 26 cursor: pointer; 27} 28 29#nav-open span:before { 30 bottom: -8px; 31} 32 33#nav-open span:after { 34 bottom: -16px; 35} 36 37#nav-close { 38 display: none; 39 position: fixed; 40 z-index: 99; 41 top: 0; 42 left: 0; 43 width: 100%; 44 height: 100%; 45 background: black; 46 opacity: 0; 47 transition: .3s ease-in-out; 48} 49 50#nav-content { 51 overflow: auto; 52 position: fixed; 53 top: 0; 54 left: 0; 55 z-index: 9999; 56 width: 90%; 57 max-width: 375px; 58 text-align: center; 59 height: 100%; 60 background: #ffffff; 61 transition: .3s ease-in-out; 62 -webkit-transform: translateX(-105%); 63 transform: translateX(-105%); 64} 65 66#nav-content ul { 67 padding-inline-start: 0; 68} 69 70#nav-content li { 71 list-style: none; 72 padding-top: 70px; 73 font-weight: bold; 74 color: #5F2201; 75} 76 77#nav-input:checked ~ #nav-close { 78 display: block; 79 opacity: .5; 80} 81 82#nav-input:checked ~ #nav-content { 83 -webkit-transform: translateX(0%); 84 transform: translateX(0%); 85 box-shadow: 6px 0 25px rgba(0, 0, 0, 15); 86} 87
試したこと
補足情報(FW/ツールのバージョンなど)
上記のコードはハンバーガーメニューを閉じる際、画面右端をクリックして閉じますが、
メニューを開いた際右上に×印が現れてクリックすると閉じるというのが理想です。
class="nav=unshown"
htmlはこうなってますがcssは
.nav-unshown
となってます。
実際はどちらですか?それとも本当にこのままですか?
あと、ネット上にこの手のものは転がってそうに思いますが、どれも参考になりませんでしたか?(調べたこと試したことがなにも書いてないので)
htmlが間違えており正しくはclass="nav-unshown"でした。
申し訳ございません。
調べましたがCSSだけでハンバーガーメニューを実装するサイトは閉じる×印がないものばかりで参考になりませんでした。
三本線をタップした後、線の傾きを変えて×印を作るというのは調べてなんとなくわかりましたが、この既存のコードのどこをどう変更したらいいのか数時間調べ、考えてもわからなかったので質問させていただきました。
質問は編集できますので、適宜調整してください。
あと、念のため確認したサイトURLをいくつか代表的なもので結構ですのでご提示ください。
こちらが現在のハンバーガーメニューのサンプルです。
https://saruwakakun.com/html-css/reference/nav-drawer
他に
https://q-az.net/hamburger-menu-only-css/
https://lab.sonicmoov.com/markup/css/hamburgers/
https://manabiact.com/make-hamburger-menu/
上記のようなサイトを「ハンバーガーメニュー CSSのみ ×印」などの検索ワードで調べました。
よろしくお願いします。
回答3件
あなたの回答
tips
プレビュー