cssで作成した三本線のハンバーメニューの下にテキスト「メニュー」を表示したいのですが
テキストを追加すると、三本線に重なり、位置を変更すると三本線が崩れます。
また三本線のだけのときは背景色を設定しボタン風にしましたがテキストを追加するとwidthを変更していなくても
幅が広がります。
メニューの開閉時はjavascriptでhtmlのクラス「.nav-close」が「.nav-open」に変わります。
html
1<div class="nav"> 2 <div><a id="toggle" class="nav-toggle-btn"><span class="nav-toggle-btn_sen"></span></a></div> 3<!-- 省略 -->
css
1 .nav-toggle-btn { 2 position: fixed; 3 top: 5px; 4 left: 10px; 5 z-index: 102; 6 height:auto; 7 -webkit-transition: all 0.4s ease-in-out; 8 -moz-transition: all 0.4s ease-in-out; 9 -o-transition: all 0.4s ease-in-out; 10 -ms-transition: all 0.4s ease-in-out; 11 transition: all 0.4s ease-in-out; 12 } 13 .nav-toggle-btn { 14 cursor: pointer; 15 padding: 15px 40px 28px 10px; 16 margin:0; 17 background:#ddd; 18 } 19 .nav-open .nav-toggle-btn { 20 top:0; 21 left: 240px; 22 } 23 .nav-toggle-btn .nav-toggle-btn_sen, 24 .nav-toggle-btn .nav-toggle-btn_sen:before, 25 .nav-toggle-btn .nav-toggle-btn_sen:after { 26 cursor: pointer; 27 height: 3px; 28 width: 30px; 29 background: #333; 30 position: absolute; 31 display: block; 32 content: ''; 33 } 34 .nav-toggle-btn .nav-toggle-btn_sen:before { 35 top: -7px; 36 } 37 .nav-toggle-btn .nav-toggle-btn_sen:after { 38 bottom: -7px; 39 } 40 .nav-toggle-btn .nav-toggle-btn_sen, 41 .nav-toggle-btn .nav-toggle-btn_sen:before, 42 .nav-toggle-btn .nav-toggle-btn_sen:after { 43 transition: all 500ms ease-in-out; 44 } 45 .nav-open .nav-toggle-btn .nav-toggle-btn_sen { 46 background-color: transparent; 47 } 48 .nav-open .nav-toggle-btn .nav-toggle-btn_sen:before, 49 .nav-toggle-btn.active .nav-toggle-btn_sen:after { 50 top: 7px; 51 } 52 .nav-open .nav-toggle-btn .nav-toggle-btn_sen:before { 53 transform: rotate(45deg); 54 -moz-transform: rotate(45deg); 55 -ms-transform: rotate(45deg); 56 -o-transform: rotate(45deg); 57 -webkit-transform: rotate(45deg); 58 bottom: 0; 59 } 60.nav-open .nav-toggle-btn .nav-toggle-btn_sen:after { 61 transform: rotate(-45deg); 62 -moz-transform: rotate(-45deg); 63 -ms-transform: rotate(-45deg); 64 -o-transform: rotate(-45deg); 65 -webkit-transform: rotate(-45deg); 66 } 67
やったこと
html
1<div><a id="toggle" class="nav-toggle-btn"><span class="nav-toggle-btn_sen"></span><span class="txt">メニュー</span></a></div>
「.txt」にpaddingやmarginを設定しても三本線の下に「メニュー」が表示されませんでした。
また背景色は右側と下側に広がってしまいました。
回答案を試しました。
テキストを<span>タグで括り、三本線の<span>タグの中に入れました
html
1<div><a id="toggle" class="nav-toggle-btn"><span class="text-menu"><span class="nav-toggle-btn_sen">MENU</span></span></a></div>
CSSには下記を追記しました。
css
1.nav-toggle-btn .text-menu{ 2 position: relative; 3 padding-top: 0; 4 width: 0; 5 font-size:0.7rem; 6} 7 8.nav-toggle-btn .nav-toggle-btn_sen{ 9 position: absolute; 10 top:0; 11 left:0; 12 } 13
結果はテキストの「.text-menu」のpaddingには「0」以上の数字を入れるとどんどん三本線とテキストが上に表示され、widthは「0」でも「10px」でも変化がありませんでした。
三本線の「.nav-toggle-btn_sen」には位置を設定すると、テキストも一緒に動きます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/30 11:25
2018/04/30 13:56