スマートフォンでのWEBサイトの画面で、画面の右上に上、中、下の三本線の図形が表示されている。これはハンバーガーメニューと言われ、そこをクリック(スマホではタップ)すると、メニューの項目が表示される。表示されたメニューの右上に×ボタンがあり、そこをクリックすると、また元の画面にもどる。
WEB制作では、必ずといっていいほど実装の必要があるので、ここに記述しました。
1)HTML
<header class="header-sp u-mobile" id="header-sp">
<div class="header-sp__inner">
<h1 class="header-sp__site-title">
<a href="./index.html" class="header-sp__logo">CorpLogo</a>
</h1>
<div class="header-sp__burger-btn">
<span class="bar bar__top"></span>
<span class="bar bar__middle"></span>
<span class="bar bar__bottom"></span>
</div>
<div class="header-sp__sp-nav sp-nav">
<ul class="sp-nav__items">
<li class="sp-nav__item"><a href="#">About</a></li>
<li class="sp-nav__item"><a href="#">Service</a></li>
<li class="sp-nav__item"><a href="#">News</a></li>
<li class="sp-nav__btn">
<a href="#" class="btn">Contact</a>
</li>
</ul>
</div>
</div>
</header>
2)CSS
.u-mobile {
display: none;
}
@media screen and (max-width: 768px) {
.u-mobile {
display: block;
}
}
.btn {
width: 130px;
height: 50px;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
background-color: #2B3F2F;
border-radius: 4px;
}
@media screen and (max-width: 768px) {
.header-sp {
height: 74px;
position: fixed;
top: 0;
left: 0;
z-index: 999;
background-color: #fff;
width: 100%;
}
.header-sp__inner {
width: 100%;
height: inherit;
display: flex;
align-items: center;
}
.header-sp__logo {
font-size: 24px;
font-weight: 500;
color: #2B3F2F;
margin-left: 15px;
}
.header-sp__burger-btn {
display: block;
position: absolute;
top: 29px;
right: 6vw;
z-index: 15;
}
.bar {
display: block;
height: 2px;
width: 25px;
background-color: #000000;
}
.bar__top {
margin-bottom: 4.447px;
}
.bar__middle {
margin-bottom: 4.447px;
}
.header-sp__burger-btn.cross .bar__top {
transform: rotate(45deg) translate(1px, 8px);
transition: 0.3s;
}
.header-sp__burger-btn.cross .bar__middle {
opacity: 0;
transition: 0.3s;
}
.header-sp__burger-btn.cross .bar__bottom {
transform: rotate(-45deg) translate(1px, -8px);
transition: 0.3s;
}
.sp-nav {
display: none;
position: absolute;
top: 0;
left: 0;
right: 0;
width: 100%;
height: 100vh;
background-color: #ffffff;
z-index: 13;
}
.sp-nav__items {
height: 100vh;
display: flex;
align-items: center;
flex-direction: column;
justify-content: center;
}
.sp-nav__item:not(:first-child) {
margin-top: 50px;
}
.sp-nav__item a {
display: block;
width: 100%;
padding-top: 16px;
padding-bottom: 16px;
color: #000000;
font-size: 16px;
}
.sp-nav__btn {
margin-top: 50px;
}
}
3)JS
$('.header-sp__burger-btn').on('click', function () {
$('.header-sp__burger-btn').toggleClass('cross');
$('.sp-nav').fadeToggle(300);
$('body').toggleClass('noscroll');
});
処理手順
1)三本線のコンテンツがクリックされる、$(‘.header-sp__burger-btn’).on(‘click’, function () {
2)三本線のそれぞれの線にcrossクラスが付与されることにより、×の表示となる
3)メニューが表示されるfadeToggle(300)
コメント