1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ハンバーガーボタンとドロワーメニュー

Posted at

ハンバーガーメニュー仕組み

・HTML
・CSS
・javascript(jquery)

1.HTMLで「ハンバーガーアイコン」と「表示されるメニュー」を作成
2.JavaScript(jquery)でハンバーガーアイコンのクリックアクションを作成
3.2のクリックアクションでそれぞれのdivにclassを加えたり消したりする
4.3のclassの有無でdivのCSSが変化し、メニューの表示・非表示が行われる

1.ハンバーガー(三)ボタン
  (三)ボタンを押すと(☓)ボタンに切り替わりメニューが表示される
2.閉じる(☓)ボタン
  閉じるボタンを押すとメニューが非表示になり、(三)ボタンに切り替わる
3.メニュー部分(通常時非表示)(クリック時表示)
  閉じるボタンを押すとメニュー部分が非表示になる

(例)ハンバーガーメニューの作り方(順番)

1.ハンバーガーメニューになる元を作る 2.ハンバーガーメニューの背景を作る(配置) 3.ボタン(三本線)を作る 4.クリックしたら閉じるボタン(☓)にする(切り替え) 5. メニューを表示・非表示にする 他にも作り方があり、このつくり方が正しいとは限らない。 ※spanで作ったり、divやチェックボックス、a、buttonなどで作っているのを見かける。 *** 1. ハンバーガーボタンのもとになるコード
<div class="humburger"><!--ハンバーガーボタン-->
      <span></span>
      <span></span>
      <span></span>
</div>

2.背景作る

.humburger {
background-color: beige; /*分かりやすく色をbeigeに*/
position: fixed;      /*今回は固定して作ってます*/
top: 10px;
right: 10px;
width: 40px;
height: 40px;
}

3.三本線を作る

.humburger span {
  width: 30px;
  height: 1px;
  background-color: #333;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  transition: 0.3s; /*真ん中の線がゆっくり消えるように*/
}

.humburger span:nth-of-type(1) {
  transform: translate(-50%, -10px);
}

.humburger span:nth-of-type(3) {
  transform: translate(-50%, 9px);
}

4.クリックしたら☓ボタンになるように切り替え
  真ん中の線を消して、上下の線を☓にする。 

.humburger.active span:nth-of-type(1) {
transform: rotate(45deg) translate(-50%, 0);
transform-origin: 0% 50%;
}

.humburger.active span:nth-of-type(2) {
	opacity: 0;
}

.humburger.active span:nth-of-type(3) {
transform: rotate(-45deg) translate(-50%, 0);
transform-origin: 0% 50%;
}

クリックしたらactiveを追加するようにする

 document.addEventListener('DOMContentLoaded', function() {
   document.getElementById("humburger").addEventListener("click", function() {
   	this.classList.toggle("active")
   })
  });

5.メニューを表示・非表示にする
元になるメニュー作り、CSSで配置や色などを決める。
クリックしたら右からnavが表示され、もう一度クリックすると閉じるようにする。(ドロワーメニュ-みたいにする)

<nav id="nav">
   <ul>
          <li><a href="">menu0</a></li>
	  <li><a href="">menu1</a></li>
	  <li><a href="">menu2</a></li>
	  <li><a href="">menu3</a></li>
	  <li><a href="">menu4</a></li>
   </ul>
  </nav>
nav {
    position: fixed;
	top: 0px;
	right: -200px;
	width: 180px;
	height: 100%;
	padding: 40px 30px 0 0;
	opacity: 0;
	transition: 0.4s;
	visibility: hidden;
	background-color: #ddd;
	text-align: center; 
	z-index: -1;
}

nav.active {
	opacity: 1;
	visibility: visible;
	right: 0;
}

a {
	font-size: 2rem;
	color: black; 
}	

li {
	padding: 5px 0 10px 0;
	padding-top: 20px;
}

4で書いたjavascriptに(navのactiveを追加する)

document.addEventListener('DOMContentLoaded', function() {
   document.getElementById("humburger").addEventListener("click", function() {
   	this.classList.toggle("active");
   	document.getElementById("nav").classList.toggle("active");
   })
  });

今回記述したコードで作ったもの

(クリック前) 画像は拡大してます。 左の文字やボタンは気にしないでください。 ![FireShot Capture 037 - 1234 - .jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/556803/71ae8424-cbfb-3e87-e09a-e24820e0fefd.jpeg)

(クリック後)
FireShot Capture 039 - 1234 - .jpg

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?