※本ページはプロモーションが含まれています。
JavaScriptでハンバーガーメニューってどういう順序で実装すればいいのか最初は分からないですよね。
実は、皆がそうでhtml,css,Javascriptとそれぞれ
使い分けをしてハンバーガメニューを実装します。
なぜなら、htmlはレイアウト、cssはデザイン、Javascriptで動きを実装します。
私は学校に通わずに、独学でプログラミングを勉強しました。未経験ですがプログラマーとして就職でき
プログラマー歴は約10年ほどです。
この記事では「Javascriptでハンバーガーメニューの実装方法」「html,css,javascriptの役割の仕方」「実装のポイント」の方法を教えます。
この記事を読むと、ハンバーガーメニューの使い方が分かります。
結論は、html,css,javascriptをそれぞれの役割を理解し実装するだけです。
コピペも出来るようにしていますので、ご利用下さい。
一般的に上部に設置されている「三本線」のボタンです。デザインがハンバーガーに似ている事から名付けられました。クリックすると中に、隠されている情報が出現する。主にスマートフォンサイトに用いる事が多い。
javascriptでクリックするイベントが出るようにしています。
cssで、アニメーションや色味
htmlでレイアウトを作成
HTML
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
</head>
<body>
<header class="header">
<div class="navtext-container">
<div class="navtext">YOUR COMPANY</div>
<button type="button" class="menu-btn">
<i class="fa fa-bars" aria-hidden="true">=</i>
</button>
<div class="menu">
<div class="menu__item">MENU-1</div>
<div class="menu__item">MENU-2</div>
<div class="menu__item">MENU-3</div>
</div>
</div>
</header>
</body>
CSS
.header {
background: #ddd;
position: fixed;
width: 100%;
height: 52px;
background-color: #000000;
}
/* Navbar Text */
.navtext {
position: absolute;
text-transform: uppercase;
color: #fff;
letter-spacing: 4px;
font-size: 20px;
}
/* Navbar Container */
.navtext-container {
width: 100%;
height: 52px;
position: absolute;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
}
/*----------------------------
* メニュー開閉ボタン
*----------------------------*/
.menu-btn {
position: fixed;
right: 20px;
z-index: 2;
width: 40px;
height: 40px;
display: flex;
justify-content: center;
align-items: center;
background: #000;
color: #fff;
border: 1px solid #fff;
}
/*----------------------------
* メニュー本体
*----------------------------*/
.menu {
position: fixed;
top: 0;
right: 0;
z-index: 1;
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: #555;
}
.menu__item {
width: 100%;
height: auto;
padding: 0.5em 1em;
text-align: center;
color: #fff;
box-sizing: border-box;
}
/*----------------------------
* アニメーション部分
*----------------------------*/
/* アニメーション前のメニューの状態 */
.menu {
transform: translateY(100vw);
transition: all 0.3s linear;
}
/* アニメーション後のメニューの状態 */
.menu.is-active {
transform: translateX(0);
}
Javascript
document.querySelector(".menu-btn").addEventListener("click", function () {
document.querySelector(".menu").classList.toggle("is-active");
});
Twitterも見てみる?