JSFiddle - React, Tailwind, and code Playground
by KURO KUMO
HTML
<div class="wrapper">AAAA</div>
<div class="menu-btn" id="js__btn">
<span data-txt-menu="MENU" data-txt-close="CLOSE"></span>
</div>
<nav class="menu" id="js__nav">
<ul>
<li><a href="#">メニュー名</a></li>
<li><a href="#">メニュー名</a></li>
<li><a href="#">メニュー名</a></li>
<li><a href="#">メニュー名</a></li>
</ul>
</nav>
CSS
body{
background:blue
}
.menu-btn {
position: fixed;
top: 20px;
right: 20px;
width: 100px;
height: 50px;
line-height: 50px;
font-size: 12px;
text-align: center;
cursor: pointer;
z-index: 1;
}
.menu-btn span {
color: #fff;
}
.menu-btn span:after {
content: attr(data-txt-menu);
}
/* 開閉用ボタンがクリックされた時のスタイル */
.open .menu-btn span:after {
content: attr(data-txt-close);
}
.menu {
position: fixed;
display: table;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0,0,0,.8);
-webkit-transition: all .5s;
transition: all .5s;
visibility: hidden;
opacity: 0;
}
.menu ul {
display: table-cell;
vertical-align: middle;
}
.menu li {
width: 300px;
height: 80px;
line-height: 80px;
margin: 0 auto;
text-align: center;
}
.menu li a {
display: block;
font-size: 18px;
color: #fff;
}
.menu li a:hover {
color: #999;
}
/* 開閉用ボタンがクリックされた時のスタイル */
.open .menu {
cursor: url(../images/cross.svg),auto;
-webkit-transition: all .5s;
transition: all .5s;
visibility: visible;
opacity: 1;
}
JavaScript
$(function () {
var $body = $('body');
//開閉用ボタンをクリックでクラスの切替え
$('#js__btn').on('click', function () {
$body.toggleClass('open');
});
//メニュー名以外の部分をクリックで閉じる
$('#js__nav').on('click', function () {
$body.removeClass('open');
});
});