Ruby on Rails Tutorial のナビゲーションバーを Bootstrap 4 で作る
Ruby on Rails Tutorialの 5.1.1 ナビゲーション では、Bootstrap 3 を用いてナビゲーションバーを作成しています。2018年12月現在、Bootstrap 4 が最新となります。
バージョンの違いにより、ナビゲーションバーがうまく表示されないため、以下では、Bootstrap 4 を用いて、それっぽいナビゲーションバーをhtmlで作成していきます。
作成準備
公式ホームページの Starter template を使い、雛型を作成します。
- index.html
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <title>Ruby on Rails Tutorial</title> </head> <body> <header> <nav> <a id="logo">sample app</a> <ul> <li><a href="#">Home</a></li> <li><a href="#">Help</a></li> <li><a href="#">Log in</a></li> </ul> </nav> </header> <h1>Hello, world!</h1> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> </body> </html>
作成開始
装飾していきます。
navタグにクラスを指定
まず、ナビゲーションバーには、.navbar
と navbar-expand
を設定します。
次に、明るい背景色 .navbar-light
か、暗い背景色 .navbar-dark
のどちらかを設定し、背景色として .bg-*
を設定します。
そして、画面上部に固定するために、.fixed-top
を設定します。
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark"> ... </nav>
Hello, world!
がナビゲーションバーで隠れてしまうので、やや強引ですが、余白を設定します。
<body class="mt-5 pt-5"> ... </body>
ロゴ
.navbar-brand
を設定します。
大文字にするために .text-uppercase
を、太字にするために .font-weight-bold
を設定しています。
<a class="navbar-brand text-uppercase font-weight-bold" href="#">sample app</a>
ナビゲーションコンポーネント
ul.navbar-nav
、li.nav-item
、a.nav-link
をそれぞれ設定します。
<ul class="navbar-nav"> <li class="nav-item"><a class="nav-link" href="#">Home</a></li> <li class="nav-item"><a class="nav-link" href="#">Help</a></li> <li class="nav-item"><a class="nav-link" href="#">Log in</a></li> </ul>
ロゴとナビゲーションコンポーネントとの間にスペースを空ける
フレックスユーティリティクラスを使用することで、ナビゲーションの右寄せ .justify-content-end
や中央寄せ .justify-content-center
などができます。
<nav class="navbar navbar-expand navbar-dark fixed-top bg-dark justify-content-between"> ... </nav>
完成
以上で完成となります。
- index.html
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <title>Ruby on Rails Tutorial</title> </head> <body class="mt-5 pt-5"> <header> <nav class="navbar navbar-expand navbar-dark fixed-top bg-dark justify-content-between"> <a class="navbar-brand text-uppercase font-weight-bold" href="#">sample app</a> <ul class="navbar-nav"> <li class="nav-item"><a class="nav-link" href="#">Home</a></li> <li class="nav-item"><a class="nav-link" href="#">Help</a></li> <li class="nav-item"><a class="nav-link" href="#">Log in</a></li> </ul> </nav> </header> <h1>Hello, world!</h1> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> </body> </html>