質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

1回答

1510閲覧

ハンバーガーメニューの3本線だけにクリック範囲を指定したい

niconic73027793

総合スコア215

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2022/04/28 02:57

ハンバーガーメニューを作っています。

ハンバーガーメニューで囲った class でなく
3本線の部分だけマウスオーバーしたらクリック出来るようにしたいのですが、
どのように書いたら良いでしょうか?

クリック範囲を広げるには
display:block;
で広げるのはわかるのですが、 指定した3本線だけにする方法は調べても分かりませんでした。

<div class="hamburger js-hamburger"> <span></span> <span></span> <span></span> </div> <!-- /.hamburger -->
/* ハンバーガ―メニュー */ .hamburger { background-color:black; display: block; width: 85px; height: 85px; position: fixed; top: 0; right: 0; z-index: 30; cursor: pointer; transition: 0.3s; } .hamburger:hover { opacity: 0.7; } /* ハンバーガーメニューの線の設定(メニューが閉じている時) */ .hamburger span { width: 50%; height: 2px; background: #fff; color:black; position: absolute; left: 25px; transition: 0.3s ease-in-out; } /* 1本目の線の位置を設定 */ .hamburger span:nth-child(1) { top: 36%; } /* 2本目の線の位置を設定 */ .hamburger span:nth-child(2) { top: 50%; } /* 3本目の線の位置を設定 */ .hamburger span:nth-child(3) { top: 64%; } /* ハンバーガーメニューの線の設定(メニューが開いている時) 1本目の線を-45度回転 */ .hamburger.open span:nth-child(1) { top: 47px; left: 25px; background: #fff; transform: rotate(-45deg); } /* 2本目と3本目は重ねて45度回転 */ .hamburger.open span:nth-child(2), .hamburger.open span:nth-child(3) { top: 47px; background: #fff; transform: rotate(45deg); } /*マスク*/ #burger-musk { display: none; transition: 0.5s; } #burger-musk.open { width: 100%; height: 100%; background-color: rgb(0, 0, 0, .8); cursor: pointer; display: block; opacity: 0.8; position: fixed; top: 0; left: 0; z-index: 9; }

コードペンURL

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

流石に本当に線のみクリックできる状態だとUI的に良くないと思いますが、こんな感じで中にもう一つdivを作って線のみ囲めばいいんじゃないでしょうか?

html

1 2<div class="hamburger js-hamburger"> 3 <div class="hamburger-inner"> 4 <span></span> 5 <span></span> 6 <span></span> 7 </div> 8 </div> 9 10 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

css

1/* 2ハンバーガ―メニュー 3*/ 4.hamburger { 5 background-color:black; 6 display: flex; 7 justify-content: center; 8 align-items: center; 9 width: 85px; 10 height: 85px; 11 position: fixed; 12 top: 0; 13 right: 0; 14 z-index: 30; 15 transition: 0.3s; 16} 17 18.hamburger:hover { 19 opacity: 0.7; 20} 21 22/*追加*/ 23.hamburger-inner{ 24 width: 42.5px; 25 height: 30px; 26 position: relative; 27 cursor: pointer; 28} 29 30.hamburger span { 31 width: 100%; 32 height: 2px; 33 background: #fff; 34 color:black; 35 position: absolute; 36 left: 0; 37 transition: 0.3s ease-in-out; 38} 39 40.hamburger span:nth-child(1) { 41 top: 0; 42} 43 44.hamburger span:nth-child(2) { 45 top: 50%; 46} 47 48.hamburger span:nth-child(3) { 49 bottom: 0; 50} 51 52.hamburger-inner.open span:nth-child(1) { 53 top: 50%; 54 left: 0; 55 background: #fff; 56 transform: rotate(-45deg); 57} 58 59.hamburger-inner.open span:nth-child(2), 60.hamburger-inner.open span:nth-child(3) { 61 top: 50%; 62 background: #fff; 63 transform: rotate(45deg); 64}

javascript

1$(function(){ 2 3 /*================================================= 4 ハンバーガ―メニュー 5 ===================================================*/ 6 $('.hamburger-inner').on('click', function() { 7 $(this).toggleClass('open'); 8 $('#navi').toggleClass('open'); 9 $('body').toggleClass('noscroll'); 10 11 if ($('.hamburger-inner').hasClass('open')) { 12 $('#burger-musk').fadeToggle(300).addClass('open'); 13 14 } else { 15 16 $('#burger-musk').fadeToggle(300).removeClass('open'); 17 18 } 19 }); 20 21 // #maskのエリアをクリックした時にメニューを閉じる 22 $('#burger-musk').on('click', function() { 23 $('.hamburger-inner').removeClass('open'); 24 $('#navi').removeClass('open'); 25 $('body').removeClass('noscroll'); 26 $('#burger-musk').fadeToggle(300).addClass('open'); 27 28 29 }); 30 31 // リンクをクリックした時にメニューを閉じる 32 $('#navi a').on('click', function() { 33 $('.hamburger-inner').removeClass('open'); 34 $('#navi').removeClass('open'); 35 $('body').removeClass('noscroll'); 36 }); 37 })

https://codepen.io/fushimi/pen/gOoVjjb
アニメーションなどは適宜調整してください。

投稿2022/04/28 05:06

vabo

総合スコア171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問