Bootstrap
Since 2011最近のアップデート
@ユーザー名 このユーザーに関するいくつかの情報を含む、いくつかの代表的なプレースホルダーコンテンツ。これが何らかのステータス更新であると想像してみよう。
@ユーザー名 この他のユーザーに関連するより代表的なプレースホルダーコンテンツ。恐らく別のステータスの更新。
@ユーザー名 このユーザーは、代表的なプレースホルダーコンテンツも取得。たぶんそれらは何か面白いことをした、そしてあなたは本当に最近のアップデートでこれを強調したいと思う。
CSSの設定
html,
body {
overflow-x: hidden; /* 狭いデバイスでのスクロールを防止 */
}
body {
padding-top: 56px;
}
@media (max-width: 991.98px) {
.offcanvas-collapse {
position: fixed;
top: 56px; /* ナビバーの高さ */
bottom: 0;
left: 100%;
width: 100%;
padding-right: 1rem;
padding-left: 1rem;
overflow-y: auto;
background-color: #343a40;
transition: visibility .3s ease-in-out, -webkit-transform .3s ease-in-out;
transition: transform .3s ease-in-out, visibility .3s ease-in-out;
transition: transform .3s ease-in-out, visibility .3s ease-in-out, -webkit-transform .3s ease-in-out;
}
.offcanvas-collapse.open {
visibility: visible;
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
}
.nav-scroller {
position: relative;
z-index: 2;
height: 2.75rem;
overflow-y: hidden;
}
.nav-scroller .nav {
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
padding-bottom: 1rem;
margin-top: -1px;
overflow-x: auto;
color: rgba(255, 255, 255, .75);
text-align: center;
white-space: nowrap;
-webkit-overflow-scrolling: touch;
}
.nav-underline .nav-link {
padding-top: .75rem;
padding-bottom: .75rem;
font-size: .875rem;
color: #6c757d;
}
.nav-underline .nav-link:hover {
color: #007bff;
}
.nav-underline .active {
font-weight: 510;
color: #343a40;
}
.bg-purple {
background-color: #6f42c1;
}
※これを offcanvas-navbar.css
として保存する。
HTMLの設定
<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>オフキャンバスナビゲーションバー</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH">
//CSSの設定など
<!-- CSSの設定ファイル -->
<link rel="stylesheet" href="offcanvas-navbar.css">
</head>
<body class="bg-body-tertiary">
<nav class="navbar navbar-expand-lg fixed-top bg-body-secondary" data-bs-theme="dark" aria-label="メイン・ナビゲーション">
<div class="container-fluid">
<a class="navbar-brand" href="#">オフキャンバス</a>
<button class="navbar-toggler p-0 border-0" type="button" id="navbarSideCollapse" aria-label="ナビゲーションの切替">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse offcanvas-collapse" id="navbarsExampleDefault">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">ダッシュボード</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">通知</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">プロフィール</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">アカウント切替</a>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">ドロップダウン</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">リンク1</a></li>
<li><a class="dropdown-item" href="#">リンク2</a></li>
<li><a class="dropdown-item" href="#">リンク3</a></li>
</ul>
</li>
</ul>
<form class="d-flex" role="search">
<input class="form-control me-2" type="search" placeholder="検索" aria-label="検索">
<button class="btn btn-outline-success flex-shrink-0" type="submit">検索</button>
</form>
</div>
</div>
</nav>
<div class="nav-scroller bg-body shadow-sm">
<nav class="nav nav-underline" aria-label="第2ナビゲーション">
<a class="nav-link active" aria-current="page" href="#">ダッシュボード</a>
<a class="nav-link" href="#">
友達
<span class="badge text-body-emphasis bg-body-secondary rounded-pill align-text-bottom">27</span>
</a>
<a class="nav-link" href="#">探検</a>
<a class="nav-link" href="#">提案</a>
<a class="nav-link" href="#">リンク</a>
<a class="nav-link" href="#">リンク</a>
<a class="nav-link" href="#">リンク</a>
<a class="nav-link" href="#">リンク</a>
<a class="nav-link" href="#">リンク</a>
</nav>
</div>
<main class="container">
<div class="d-flex align-items-center p-3 my-3 text-white bg-purple rounded shadow-sm">
<img class="me-3" src="../images/bootstrap-logo-white.svg" alt="" width="48" height="38" loading="lazy">
<div class="lh-1">
<h1 class="h6 mb-0 text-white lh-1">Bootstrap</h1>
<small>Since 2011</small>
</div>
</div>
<div class="my-3 p-3 bg-body rounded shadow-sm">
<h6 class="border-bottom pb-2 mb-0">最近のアップデート</h6>
<div class="d-flex text-body-secondary pt-3">
<svg class="bd-placeholder-img flex-shrink-0 me-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice"><title>一般的なプレースホルダ画像</title><rect fill="#007bff" width="100%" height="100%" /><text fill="#007bff" dy=".3em" x="50%" y="50%">32x32</text></svg>
<p class="pb-3 mb-0 small lh-sm border-bottom">
<strong class="d-block text-gray-dark">@ユーザー名</strong>
このユーザーに関するいくつかの情報を含む、いくつかの代表的なプレースホルダーコンテンツ。これが何らかのステータス更新であると想像してみよう。
</p>
</div>
<div class="d-flex text-body-secondary pt-3">
<svg class="bd-placeholder-img flex-shrink-0 me-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice"><title>一般的なプレースホルダ画像</title><rect fill="#e83e8c" width="100%" height="100%" /><text fill="#e83e8c" dy=".3em" x="50%" y="50%">32x32</text></svg>
<p class="pb-3 mb-0 small lh-sm border-bottom">
<strong class="d-block text-gray-dark">@ユーザー名</strong>
この他のユーザーに関連するより代表的なプレースホルダーコンテンツ。恐らく別のステータスの更新。
</p>
</div>
<div class="d-flex text-body-secondary pt-3">
<svg class="bd-placeholder-img flex-shrink-0 me-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice"><title>一般的なプレースホルダ画像</title><rect fill="#6f42c1" width="100%" height="100%" /><text fill="#6f42c1" dy=".3em" x="50%" y="50%">32x32</text></svg>
<p class="pb-3 mb-0 small lh-sm border-bottom">
<strong class="d-block text-gray-dark">@ユーザー名</strong>
このユーザーは、代表的なプレースホルダーコンテンツも取得。たぶんそれらは何か面白いことをした、そしてあなたは本当に最近のアップデートでこれを強調したいと思う。
</p>
</div>
<small class="d-block text-end mt-3">
<a href="#">すべてを表示</a>
</small>
</div>
<div class="my-3 p-3 bg-body rounded shadow-sm">
<h6 class="border-bottom pb-2 mb-0">提案</h6>
<div class="d-flex text-body-secondary pt-3">
<svg class="bd-placeholder-img flex-shrink-0 me-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice"><title>一般的なプレースホルダ画像</title><rect fill="#007bff" width="100%" height="100%" /><text fill="#007bff" dy=".3em" x="50%" y="50%">32x32</text></svg>
<div class="pb-3 mb-0 small lh-sm border-bottom w-100">
<div class="d-flex justify-content-between">
<strong class="text-gray-dark">フルネーム</strong>
<a href="#">フォロー</a>
</div>
<span class="d-block">@ユーザー名</span>
</div>
</div>
<div class="d-flex text-body-secondary pt-3">
<svg class="bd-placeholder-img flex-shrink-0 me-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice"><title>一般的なプレースホルダ画像</title><rect fill="#007bff" width="100%" height="100%" /><text fill="#007bff" dy=".3em" x="50%" y="50%">32x32</text></svg>
<div class="pb-3 mb-0 small lh-sm border-bottom w-100">
<div class="d-flex justify-content-between">
<strong class="text-gray-dark">フルネーム</strong>
<a href="#">フォロー</a>
</div>
<span class="d-block">@ユーザー名</span>
</div>
</div>
<div class="d-flex text-body-secondary pt-3">
<svg class="bd-placeholder-img flex-shrink-0 me-2 rounded" width="32" height="32" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice"><title>一般的なプレースホルダ画像</title><rect fill="#007bff" width="100%" height="100%" /><text fill="#007bff" dy=".3em" x="50%" y="50%">32x32</text></svg>
<div class=pb-3 mb-0 small lh-sm border-bottom w-100">
<div class="d-flex justify-content-between">
<strong class="text-gray-dark">フルネーム</strong>
<a href="#">フォロー</a>
</div>
<span class="d-block">@ユーザー名</span>
</div>
</div>
<small class="d-block text-end mt-3">
<a href="#">すべてを表示</a>
</small>
</div>
</main>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
//JavaScriptプラグインの設定など
<!-- JSの設定ファイル -->
<script src="offcanvas-navbar.js"></script>
</body>
</html>
JavaScriptの設定
(() => {
'use strict'
document.querySelector('#navbarSideCollapse').addEventListener('click', () => {
document.querySelector('.offcanvas-collapse').classList.toggle('open')
})
})()
※これを offcanvas-navbar.js
として保存する。