Tips – ヘッダーメニュー

概要

HTMLのheader要素内に固定メニューを配置する。左端にロゴ画像を置き、メニューは右寄せで配置する例。

HTML/CSS

HTML

ヘッダーにdiv要素によるロゴ画像とulによるメニューを配置し、スタイルはCSSで設定する。

CSS

header内のロゴとメニューブロックをFlex-boxで配置し、左右に寄せている。メニューリストの水平配置にもFlex-boxを使っている。

なおheaderを固定してbodyのみをスクロールさせることもできる。

  • 最初のブロックでスタイルをリセット。
  • header要素
    • display: flex指定でコンテンツ(ロゴ、メニューブロック)をフロートさせて配置
    • justify-contentで2つのコンテンツを左端と右端に寄せる
    • 高さを指定
  • .header_logo
    • div要素に背景画像を指定
  • .header_menu
  • .header_menu li
    • 最初の3行はリストの中の文字を縦横センタリングする設定
  • .header_menu li + li

ロゴのサイズについて

  • div要素で背景画像のみを表示させるときはwidth/heightを明示的に設定しなければならない
  • 当初はheight: 100%headerの高さに合わせ、width: autoで表示されていた
  • ところがそこで親のheaderdisplay: flexを設定すると表示が消えてしまった
  • そこでここでは、グローバルなカスタムプロパティーを使っている

Rails/SCSS

HTML

  • 通常すべてのレンダリング時に使われる共通レイアウト
    • app/views/layouts/application.html.erb
  • これとは別にヘッダーメニューが必要な場合の共通レイアウトファイルを作成
    • app/views/layouts/application_with_header.html.erb

ヘッダーメニューが必要なアクションのみこのレイアウトを使うため、コントローラーでレイアウトファイルを指定。

レイアウトファイルが読み込むスタイルシートは標準と同じapplication.css

requireされるlayout.scssで、ヘッダーメニュー用のSCSSを読み込む(ヘッダーメニューがない場合も読み込む)。

SCSS

以下のSCSSファイルを作成して読み込ませる。リセットCSSは別に読み込んでいる。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です