Skip to content

Bootstrap 5 ナビゲーションバーのアイテムを右揃えする方法

問題点

Bootstrap 5でナビゲーションバーのアイテムを右側に配置する方法について、Bootstrap 3の navbar-right や Bootstrap 4の ml-auto が機能しないという問題があります。

背景

Bootstrap 5では、従来の左右(left/right)の概念が、RTL(右から左への記述方向)サポートのため、開始(start)/終了(end)に変更されました。

解決策

方法1: ms-auto を使用する(推奨)

最もシンプルで一般的な方法は、ms-auto クラスを使用することです。

html
<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">ロゴ</a>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
        <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>
      </ul>
    </div>
  </div>
</nav>
html
<nav class="navbar navbar-expand-lg bg-primary navbar-dark">
  <div class="container">
    <a class="navbar-brand" href="#">サイト名</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarsExample">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarsExample">
      <ul class="navbar-nav ms-auto mb-lg-0">
        <li class="nav-item">
          <a class="nav-link" 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>
      </ul>
    </div>
  </div>
</nav>
html
<Navbar.Collapse id="basic-navbar-nav">
  <Nav className="ms-auto">
    <Link href="/" passHref>
      <Nav.Link>ホーム</Nav.Link>
    </Link>
  </Nav>
</Navbar.Collapse>

方法2: justify-content-end を使用する

親要素に justify-content-end クラスを追加する方法もあります。

html
<div class="collapse navbar-collapse justify-content-end" id="navbarNav">
  <ul class="navbar-nav mb-2 mb-lg-0">
    <li class="nav-item">
      <a class="nav-link" href="#">メニュー1</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#">メニュー2</a>
    </li>
  </ul>
</div>

方法3: d-flex を利用したカスタムレイアウト

より複雑なレイアウトが必要な場合、d-flex を活用できます。

html
<div class="d-flex">
  <ul class="navbar-nav me-auto mb-2 mb-lg-0">
    <li class="nav-item">
      <a class="nav-link active" href="#">右リンク1</a>
    </li>
    <li class="nav-item">
      <a class="nav-link" href="#">右リンク2</a>
    </li>
  </ul>
</div>

Bootstrap 5における方向指定の変更点

Bootstrap 5では、RTLサポートのため方向指定のクラス名が変更されています:

Bootstrap 4Bootstrap 5説明
ml-automs-auto左マージン → 開始マージン
mr-autome-auto右マージン → 終了マージン
pl-*ps-*左パディング → 開始パディング
pr-*pe-*右パディング → 終了パディング
text-lefttext-start左揃え → 開始揃え
text-righttext-end右揃え → 終了揃え

注意点

Bootstrap 5のバージョンによって挙動が異なる場合があります。最新のバージョンを使用し、公式ドキュメンテーションを確認することをお勧めします。

実装時のヒント

  1. レスポンシブ対応: モバイル表示ではナビゲーションアイテムが適切に折りたたまれることを確認してください
  2. アクセシビリティ: 適切なARIA属性を使用してナビゲーションのアクセシビリティを確保してください
  3. 一貫性: プロジェクト全体で方向指定クラスの命名規則を統一してください

まとめ

Bootstrap 5ではナビゲーションアイテムを右揃えするために ms-auto クラスを使用するのが最も一般的で推奨される方法です。この変更はBootstrap 5のRTLサポート強化に伴う命名規則の変更によるもので、従来の ml-autonavbar-right は廃止されています。

ベストプラクティス

  • シンプルな右揃えには ms-auto を使用
  • 複雑なレイアウトにはFlexboxユーティリティを活用
  • 常に最新のBootstrapドキュメンテーションを参照