<header>
<div id="nav-drawer">
<input id="nav-input" type="checkbox" class="nav-unshown">
<label id="nav-open" for="nav-input"><span></span></label>
<label class="nav-unshown" id="nav-close" for="nav-input"></label>
<div id="nav-content">ここに中身を入れる</div>
</div>
</header>
css
header {
padding:10px;
background: skyblue;
}
#nav-drawer {
position: relative;
}
.nav-unshown {
display:none;
}
#nav-open {
display: inline-block;
width: 30px;
height: 22px;
vertical-align: middle;
}
#nav-open span, #nav-open span:before, #nav-open span:after {
position: absolute;
height: 3px;
width: 25px;
border-radius: 3px;
background: #555;
display: block;
content: '';
cursor: pointer;
}
#nav-open span:before {
bottom: -8px;
}
#nav-open span:after {
bottom: -16px;
}
#nav-close {
display: none;
position: fixed;
z-index: 99;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: black;
opacity: 0;
transition: .3s ease-in-out;
}
#nav-content {
overflow: auto;
position: fixed;
top: 0;
left: 0;
z-index: 9999;
width: 90%;
max-width: 330px;
height: 100%;
background: #fff;
transition: .3s ease-in-out;
-webkit-transform: translateX(-105%);
transform: translateX(-105%);
}
#nav-input:checked ~ #nav-close {
display: block;
opacity: .5;
}
#nav-input:checked ~ #nav-content {
-webkit-transform: translateX(0%);
transform: translateX(0%);
box-shadow: 6px 0 25px rgba(0,0,0,.15);
}
jQueryとCSSで実装する方法
html
<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<div id="wrapper">
<span></span>
<span></span>
<span></span>
<nav id="global-navi">
<ul class="menu">
<li><a href="">トップ</a></li>
<li><a href="">概要</a></li>
<li><a href="">特集</a></li>
<li><a href="">アクセス</a></li>
<li><a href="">お問い合わせ</a></li>
</ul>
</nav>
</div>
css
#global-navi {
background:#333;
position: fixed;
top: 0;
right: 0px;
width: 100%;
}
#wrapper nav ul li{
display:inline-block;
font-size: 16px;
padding: 30px 20px 25px 28px;
}
#wrapper nav ul li a{
color: #ddd
}
@media screen and (max-width: 600px) {
#wrapper nav {
position: fixed;
top: 0;
right: -300px;
width: 300px;
height: 100%;
padding-top: 50px;
background:#333;
font-size: 16px;
box-sizing: border-box;
z-index: 2
}
#wrapper nav ul li {
display:block;
padding: 20px 28px
}
#wrapper nav ul li a {
text-decoration: none;
color: #ddd
}
#wrapper .btn-gnavi {
position: fixed;
top: 20px;
right: 20px;
width: 30px;
height: 24px;
z-index: 3;
box-sizing: border-box;
cursor: pointer;
-webkit-transition: all 400ms;
transition: all 400ms
}
#wrapper .btn-gnavi span {
position: absolute;
width: 30px;
height: 4px;
background: #666;
border-radius: 10px;
-webkit-transition: all 400ms;
transition: all 400ms
}
#wrapper .btn-gnavi span:nth-child(1) {
top: 0
}
#wrapper .btn-gnavi span:nth-child(2) {
top: 10px
}
#wrapper .btn-gnavi span:nth-child(3) {
top: 20px
}
#wrapper .btn-gnavi.open {
-webkit-transform: rotate(180deg);
transform: rotate(180deg)
}
#wrapper .btn-gnavi.open span {
background: #fff
}
#wrapper .btn-gnavi.open span {
width: 24px;
}
#wrapper .contents section p {
position: absolute;
top: 50%;
width: 30%;
line-height: 1.4;
font-size: 20px;
color: #fff;
text-shadow: 0 0 6px #666
}
#wrapper .contents section:nth-child(odd) p {
left: 10%
}
#wrapper .contents section:nth-child(even) p {
right: 10%
}
}
jQuery
$(function(){
$(".btn-gnavi").on("click", function(){
var rightVal = 0;
if($(this).hasClass("open")) {
rightVal = -300;
$(this).removeClass("open");
} else {
$(this).addClass("open");
}
$("#global-navi").stop().animate({
right: rightVal
}, 200);
});
});