Webサイトでよく見る3本線の入ったメニューについて調べてみました。
ドロワーメニュー(もしくはハンバーガーメニュー)と呼ばれていることを知った。
今回はそれを実装してみた。
#ソース
では、いつものようにソースを載せます。
drower_practice.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ドロワーメニュー 練習</title>
<link rel="stylesheet" type="text/css" href="./css/hamberger_menu.css">
<script src="https://code.jquery.com/jquery-3.2.1.js"></script>
<script src="./js/hamberger_menu.js"></script>
</head>
<body>
<div class="hamberger_menu">
<!-- 三本線 -->
<div class="hamberger_line">
<span></span>
<span></span>
<span></span>
</div>
<!-- クリックしたときのメニュー -->
<nav class="hamberger_list">
<ul>
<li><a href="#">ドロワー1</a></li>
<li><a href="#">ドロワー2</a></li>
<li><a href="#">ドロワー3</a></li>
</ul>
</nav>
</div>
</body>
</html>
hamberger_menu.css
.hamberger_line {
display: inline-block;
width: 36px;
height: 28px;
vertical-align: middle;
cursor: pointer;
position: fixed;
top: 30px;
right: 30px;
z-index: 100;
transform: translateX(0);
transition: transform .5s;
}
.hamberger_line span {
display: inline-block;
box-sizing: border-box;
position: absolute;
left: 0;
width: 100%;
height: 4px;
background-color: #000;
transition: all .5s;
}
.hamberger_line span:nth-of-type(1) {
top: 0;
}
.hamberger_line.open span:nth-of-type(1) {
transform: translateY(12px) rotate(-45deg);
}
.hamberger_line span:nth-of-type(2) {
top: 12px;
}
.hamberger_line.open span:nth-of-type(2) {
opacity: 0;
}
.hamberger_line span:nth-of-type(3) {
bottom: 0;
}
.hamberger_line.open span:nth-of-type(3) {
transform: translateY(-12px) rotate(45deg);
}
.hamberger_list {
width: 250px;
height: 100%;
padding-top: 100px;
background-color: rgb(16, 69, 153, 0.8);
position: fixed;
top: 0;
right: 0;
z-index: 10;
transform: translateX(250px);
transition: all .5s;
}
.hamberger_list.open {
transform: translateX(0);
}
.hamberger_list li {
text-align: center;
padding: 10px 0;
list-style: none;
}
.hamberger_list a {
color: #fff;
text-decoration: none;
}
hamberger_menu.js
$(function () {
// クリック時の動作
$('.hamberger_line').on('click', function() {
// メニューを閉じる
if($(this).hasClass('open')) {
$(this).removeClass('open');
$('.hamberger_list').removeClass('open');
// メニューを開く
} else {
$(this).addClass('open');
$('.hamberger_list').addClass('open');
}
});
});
#解説
ドロワーメニューをクリックしたときの開閉は、jQuery
のremoveClass
とaddClass
を使って実装している。
これを使うことで、HTML
のタグを操作している。