UnsplashのAlex Padurariuが撮影した写真
jQueryを使ったサイドバーのコードです。
便利なので個人的なメモも兼ねて記事にしました。
右上の「三」もしくは「✖」アイコンをクリックしてください。
以下のようにフォルダ、ファイルを作成して、以降のコードをそれぞれのファイルにコピペすると動きます。
app/
┣ sidebar.html
┣ css
┗ sidebar.css
┗ js
┗ sidebar.js
sidebar.html、sidebar.css、sidebar.jsそれぞれのコードです。
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Sample</title>
<!-- リセットCSS読み込み -->
<link rel="stylesheet" href="https://unpkg.com/destyle.css@3.0.2/destyle.min.css">
<!-- オリジナルのCSS読み込み -->
<link rel="stylesheet" href="css/sidebar.css">
<!-- jQuery読み込み -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<!-- オリジナルのJS読み込み -->
<script src="js/sidebar.js"></script>
</head>
<body>
<header>
<!-- ヘッダー内左側 -->
<h1 class="header__logo">Sample</h1>
<!-- ヘッダー内右側 -->
<div class="header__menu">
<div class="header__menu-button">
<button class="header__menu-trigger" id="header__menu">
<span></span>
<span></span>
<span></span>
</button>
</div>
</div>
<!-- サイドバー /////////////////////////////////////// -->
<aside>
<ul class="campany-menu">
<li>PICK UP</li>
<li>FEATURE</li>
<li>CONTACT</li>
</ul>
<ul class="sns-menu">
<li>Twitter</li>
<li>facebook</li>
<li>instagram</li>
</ul>
</aside>
<div id="mask"></div>
</header>
</body>
</html>
root {
--header-height: 80px;
}
/* ヘッダーのスタイル /////////////////////////////////////////// */
header {
height: var(--header-height);
padding: 0 40px;
display: flex;
align-items: center;
justify-content: space-between;
position: sticky;
top: 0;
left: 0;
background-color: #fff;
z-index:10;
}
.header__bottom-spacer{
height: var(--header-height);
}
.header__logo {
font-size: 36px;
}
.header__menu-trigger,
.header__menu-trigger span {
display: inline-block;
transition: all 0.4s;
box-sizing: border-box;
}
.header__menu-trigger {
position: relative;
top: 0;
right: 0;
width: 30px;
height: 22px;
cursor: pointer;
z-index: 30;
}
.header__menu-trigger span {
position: absolute;
left: 0;
width: 100%;
height: 2px;
background-color: #121212;
}
.header__menu-trigger.active span{
background-color: white;
}
.header__menu-trigger span:nth-of-type(1) {
top: 0;
}
.header__menu-trigger span:nth-of-type(2) {
top: 10px;
}
.header__menu-trigger span:nth-of-type(3) {
bottom: 0;
}
#header__menu.active span:nth-of-type(1) {
transform: translateY(10px) rotate(-315deg);
}
#header__menu.active span:nth-of-type(2) {
opacity: 0;
}
#header__menu.active span:nth-of-type(3) {
transform: translateY(-10px) rotate(315deg);
}
/* サイドバーのスタイル//////////////////////////////////////////////// */
aside {
padding: 50px 30px;
width: 300px;
height: 100vh;
position: absolute;
top: 0;
left: -300px;
z-index: 30;
background-color: rgba(0, 0, 0, 0.9);
color: #fff;
transition: all 0.5s ease;
overflow: auto;
}
aside.active {
left: 0;
background-color: rgba(0, 0, 0, 1.0);
}
#mask {
position: absolute;
top: 0;
left: 0;
z-index: 20;
cursor: pointer;
}
#mask.active {
width: 100vw;
height: 100vh;
background-color: rgba(0, 0, 0, 0.9);
}
.campany-menu{
margin-bottom: 100px;
border-top: 1px solid #fff;
}
.campany-menu li{
padding: 20px 0;
border-bottom: 1px solid #fff;
}
.sns-menu li{
margin: 10px 0;
}
$(document).ready(function () {
// ハンバーガーメニュー
$('.header__menu-trigger, #mask').on('click', function () {
$('.header__menu-trigger').toggleClass('active');
$('aside').toggleClass('active');
$('#mask').toggleClass('active');
return false;
});
});
以下のサイトでいろいろなハンバーガーメニューが紹介されていたので、使わせていただきました。