JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

CSSとJavaScriptでスマホ・タブレット対応のトップナビゲーションメニューを作成する方法

CSSとJavaScriptを組み合わせることで、スマートフォンやタブレットなど小さな画面サイズに最適化されたトップナビゲーションメニューを簡単に作成できます。本記事では、メディアクエリとハンバーガーメニューを活用したレスポンシブ対応ナビゲーションの実装方法を、実際のコード例とともに解説します。

実装例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
body {
    margin: 0px;
    padding: 0px;
}
nav {
    position: relative;
    top: 0;
    width: 100%;
    background-color: rgb(39, 39, 39);
    overflow: auto;
    height: auto;
}
.links {
    display: inline-block;
    text-align: center;
    padding: 14px;
    color: rgb(178, 137, 253);
    text-decoration: none;
    font-size: 17px;
}
.links:hover {
    background-color: rgb(100, 100, 100);
}
.selected {
    background-color: rgb(0, 18, 43);
}
.hamburger {
    color: white;
    font-weight: bolder;
    display: none;
}
@media screen and (max-width: 600px) {
nav a:not(:first-child) {
    display: none;
}
nav a.hamburger {
    float: right;
    display: block;
    padding: 12px;
}
nav.openNav a.hamburger {
    position: absolute;
    right: 0;
    bottom: 0;
}
nav.openNav a {
    float: none;
    display: block;
    text-align: center;
}
}
</style>
</head>
<body>
<nav class="bottomNav">
<a class="links selected" href="#"> Home</a>
<a class="links" href="#"> Login</a>
<a class="links" href="#"> Register</a>
<a class="links" href="#"> Contact Us</a>
<a class="links" href="#">More Info</a>
<a class="hamburger">☰</a>
</nav>
<div>
<p>Some random text here </p>
<p>Some random text here </p>
</div>
<script>
function toggleNav() {
    var x = document.getElementsByTagName("nav")[0];
    if (x.className === "bottomNav") {
        x.className += " openNav";
    } else {
        x.className = "bottomNav";
    }
}
document.querySelector(".hamburger").addEventListener("click", toggleNav);
</script>
</body>
</html>

出力結果

上記のコードを実行すると、デスクトップ画面では各リンクが横一列に並んだナビゲーションメニューが表示されます。

CSSとJavaScriptでスマホ・タブレット対応のトップナビゲーションメニューを作成する方法

画面幅を600px以下に縮小するか、スマートフォンなどのモバイル端末で閲覧すると、通常のリンクは非表示になり、代わりに画面右上にハンバーガーボタン(☰)が表示されます。

CSSとJavaScriptでスマホ・タブレット対応のトップナビゲーションメニューを作成する方法

ハンバーガーボタンをクリックすると、メニューが展開され、各リンクが縦方向に整列して表示されます。

CSSとJavaScriptでスマホ・タブレット対応のトップナビゲーションメニューを作成する方法

仕組みの解説

1. メディアクエリによるレスポンシブ対応

@media screen and (max-width: 600px) のメディアクエリにより、画面幅が600px以下の場合にのみ適用されるスタイルを定義しています。この条件の中では、最初のリンク(Home)以外を display: none で非表示にし、普段は隠れているハンバーガーボタンを display: block で表示に切り替えています。

2. JavaScriptによるメニューの開閉制御

toggleNav() 関数は、nav要素の現在のクラス名を判定し、「openNav」クラスの追加と削除を交互に行います。ハンバーガーボタンには addEventListener でクリックイベントが登録されており、ボタンが押されるたびにメニューの表示・非表示が切り替わる仕組みです。

このように、CSSのメディアクエリと少量のJavaScriptを組み合わせるだけで、モバイルフレンドリーなナビゲーションメニューを手軽に実装できます。

  1. CSSとJavaScriptでスナックバー/トーストを実装する方法【サンプルコード付き】

    スナックバー(トースト)は、画面の端に一時的に表示される小さな通知メッセージのことです。「保存が完了しました」などの操作結果をユーザーへ伝える際によく使われ、数秒後に自動的に消えるのが特徴です。CSSとJavaScriptを組み合わせれば、特別なライブラリを使わずとも簡単に実装できます。以下に、ボタンをクリックすると画面下部にスナックバーが表示され、数秒後にフェードアウトするサンプルコードを示します。コード例<!DOCTYPE html> <html> <head> <meta name="viewport" content=&qu

  2. CSSとJavaScriptでアコーディオン(開閉パネル)を作成する方法をわかりやすく解説

    CSSとJavaScriptを組み合わせることで、クリックすると内容が開閉する「アコーディオン(折りたたみパネル)」を簡単に実装できます。本記事では、実際に動作するサンプルコードをもとに、その作成手順と仕組みを詳しく解説します。 アコーディオンの実装例 以下は、HTML・CSS・JavaScriptを使ってアコーディオンを実装した完全なサンプルコードです。 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, ini