ホームページを作っているけど、ヘッダーのグローバルメニューの作り方を知りたい。
基本となる部分をコピペしたい。
ホバー時にアニメーションをつけたい。
HTMLとCSSだけで作りたい。
そのような方に向けた記事でございます。
本記事の内容
- ヘッダーのグローバルメニューのHTML
- ヘッダーのグローバルメニューのCSS
- おまけ。見本 {ホバー時のアニメーション:アンダーラインが現れる;}
本記事を書いている私は、職場のHPを作成したことがあります。
今回は、左側にロゴ、右側にグローバルメニューのリストがあるヘッダーを見本に、作り方を解説します。
HTMLとCSSの書き方がわからないという方は、こちらの記事もご覧ください。
大学生向け就活対策コース有り。DMMのプログラミングスクール、無料体験、無料相談会実施中です。
ヘッダーのグローバルメニューのHTML
HTMLの型
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <!--文書の文字コード--> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!--端末の画面の幅に合わせる。Webページが表示される倍率は1--> <title>ヘッダーメニュー</title> <!--ページのタイトル--> <link rel="stylesheet" href="header.css"> </head> <body> <!--▽▽ヘッダー▽▽--> <header> <!--ここにコードを書いていきま--> </header> <!--△△ヘッダー△△--> </body> </html>
<header>タグにヘッダーロゴとグローバルメニューを記述していきます。
ヘッダーロゴ
ロゴをクリックすると、ホーム画面に戻るようにするために、<a>タグで囲んでいます。
ここではリンク先をダミーの”#”と記述しています。
<div class="logo"> <a href="#">hakenblog </a> </div>
グローバルナビゲーションのコード
ナビゲーションタグであることを示す、<nav>タグを用います。
ヘッダーメニューは、一般的に<ul>タグと<li>タグを用いて記述するのが一般的です。
ロゴと同様に<a>タグで囲んでリンクを指定します。
<nav> <ul> <li><a href="#">NEWS</a></li> <li><a href="#">ABOUT</a></li> <li><a href="#">SERVICES</a></li> <li><a href="#">CONTACT</a></li> </ul> </nav>
HTMLの全体のコード
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <!--文書の文字コード--> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!--端末の画面の幅に合わせる。Webページが表示される倍率は1--> <title>ヘッダーメニュー</title> <!--ページのタイトル--> <link rel="stylesheet" href="header.css"> </head> <body> <!--▽▽ヘッダー▽▽--> <header> <!--▽▽ヘッダーロゴ▽▽--> <div class="logo"> <a href="#">hakenblog </a> </div> <!--△△ヘッダーロゴ△△--> <!--▽▽ヘッダーリスト▽▽--> <nav> <ul> <li><a href="#">NEWS</a></li> <li><a href="#">ABOUT</a></li> <li><a href="#">SERVICES</a></li> <li><a href="#">CONTACT</a></li> </ul> </nav> <!--△△ヘッダーリスト△△--> </header> <!--△△ヘッダー△△--> </body> </html>
ここで、ブラウザ(Google Chrome)で確認すると写真のように、ロゴとリストが1行ずつ書かれているだけのWebページであることがわかります。
続いて、CSSでデザインを整えていきます。
ヘッダーのグローバルメニューのCSS
全体構造の記述
HTMLのように、「型」というものがあるわけではないのですが、予め下記を記述しておきます。
* { box-sizing: border-box; } body { margin: 0; font-family: "Hiragino Sans W3", "Hiragino Kaku Gothic ProN", "ヒラギノ角ゴ ProN W3", "メイリオ", Meiryo, "MS Pゴシック", "MS PGothic", sans-serif; background-color: #f0f8ff; }
box-sizing: border-box; は、指定した余白やボーダーを画面の大きさに収める記述です。
PCやスマホなど、画面の大きさの違いが原因となるレイアウトの崩れを防ぎます。
background-colorは、文字通り背景色の指定です。
今回は、ヘッダーとの境目を見分けやすくする為に色をつけました。
ヘッダーのデザインの記述
ヘッダーの大きさ、色を記述
ここからは、各コードの中の/**/の間に、説明文を記述していきます。
header { height: 60px; /*今回は高さを60px*/ width: 100%; /*幅を画面いっぱい100%*/ padding: 0px 15px; /*上下0px, 左右15pxの余白*/ background-color: #f1f1f1; /*灰色背景*/ }
ロゴとリストの左側に余白ができ、少し見やすくなりました。
ヘッダーの位置を固定
header { height: 60px; width: 100%; padding: 0px 15px; background-color: #f1f1f1; position: fixed; /*常に画面上に要素を固定*/ top: 0; /*画面の一番上(topから0pxの位置)に固定*/ z-index: 10; /*z軸方向の一番上に配置*/ }
今回の見本はヘッダーだけコードを書いているので分からないですが、スクロールするとヘッダーが固定されてついてきます。
「Z-index: 10;」と指定することで、スクロールした際に、スクロール先の要素が重なってヘッダーが隠れないようにします。
ロゴとヘッダーリストを横並びにする
header { height: 60px; width: 100%; padding: 0px 15px; background-color: #f1f1f1; position: fixed; top: 0; z-index: 10; display: flex; /*直下の子要素を横並びにする*/ }
ここでの直下の子要素は、<div class=”logo”>要素と<nav>要素の二つです。
ヘッダーロゴのデザイン
ロゴをリストよりも大きくします。
.logo { font-size: 25px; /*文字のフォントを25pxにする*/ }
グローバルメニューのリスト各項目を横並びにする。
リストを右側に配置
リストを右側に配置する為に、リストの左側の外側に余白を設けます。
nav { margin: 0 0 0 auto; /*nav要素の左側に余白*/ }
リストの装飾を消し、横並びにする
<ul>タグには、デフォルトで、中点「・」とその余白や、上下の外側に余白がついているので、これらをなくします。
ul { display: flex; /*リストを横並びにする*/ list-style: none; /*unorder listの 中点を消す*/ padding: 0; /*中点が位置する左余白を消す*/ margin: 0; /*上下にある余白を消す*/ }
リンクのデザインを記述
リンクらしい、青色とアンダーバーのデザインを変更
a { color: #000000; /*黒文字*/ text-decoration: none; /* リンクの下線を削除 */ }
リスト間に余白を設ける
a { color: #000000; text-decoration: none; display: block; /*幅と高さを持ったブロック要素*/ line-height: 60px; /*ヘッダーの高さと同じ60px*/ padding: 0 20px; /*各リスト項目の余白左右20px*/ }
高さをヘッダーと同じ高さにし、「display: block;」で、どこをホバーしてもリンク矢印が表示されるようにしています。
全てのリンクに対する指定である為、ロゴにも対しても適用されます。
CSSの全体のコード
* { box-sizing: border-box; } body { margin: 0; font-family: "Hiragino Sans W3", "Hiragino Kaku Gothic ProN", "ヒラギノ角ゴ ProN W3", "メイリオ", Meiryo, "MS Pゴシック", "MS PGothic", sans-serif; background-color: #f0f8ff; } header { height: 60px; width: 100%; padding: 0px 15px; background-color: #f1f1f1; position: fixed; top: 0; z-index: 10; display: flex; } .logo { font-size: 25px; } nav { margin: 0 0 0 auto; } ul { display: flex; list-style: none; padding: 0; margin: 0; } a { color: #000000; text-decoration: none; display: block; line-height: 60px; padding: 0 20px; }
短期集中で最短3ヶ月でITエンジニアへ転職を目指す(転職保証付き)DMMのエンジニア転職特化のプログラミングスクールです。無料カウンセリングも受付中です。
おまけ。見本 {ホバー時のアニメーション:アンダーラインが現れる;}
アニメーション付きのおしゃれなリストの一例を紹介します。
こちらのリスト各項目をホバーしてみてください。
アンダーバーが真ん中からアンダーラインが現れます。
CSSに追記するだけです。
まずは、アンダーラインの位置を決めるための基準を表すコードを記述します。
先ほどの、<a>タグを指定したセレクタに、こちらを追記します。
position: relative; /* アンダーバーの位置を決めるための基準 */
次に、liに対して、擬似要素を使用します。
擬似要素とは、要素の直前または直後にその内容を追加できるコードです。
少し難しい概念ですが、今回の場合、liの直後にアンダーバーを追加しているというイメージを持ってもらえるといいです。
/*▽▽ヘッダーリストのアンダーバー▽▽*/ li ::after { position: absolute; /*親要素であるaタグを基準に位置を指定*/ bottom: 10px; /*アンダーバーが位置する、各リストの下端からの高さ*/ left: 0;/*アンダーバーを各リストの左端に指定*/ content: ''; /*本来は、擬似要素に入るテキストなどを’’内に指定。今回はアンダーバーなので何も記載しない*/ width: 100%; /*アンダーバーの幅は各リストの幅*/ height: 2px; /*アンダーバーの高さ(太さ)*/ background: #000000; /*アンダーバーの色*/ transform: scale(0, 1);/*アンダーバーの縮尺比率。ホバー前はx方向に0*/ transform-origin: center top;/*変形(アンダーバーの伸長)の原点を、liの真ん中指定*/ transition: transform 0.75s;/*変形の時間*/ } li :hover::after { transform: scale(1, 1); /*ホバー後、x軸方向に1(相対値)伸長*/ } /*△△ヘッダーリストのアンダーバー△△*/
ヘッダーにグローバルメニューを設けた一例をご紹介しました。
様々なWebページを見ると、ロゴとリストが二段になっているものや、ロゴが真ん中に設置されているものなど、他にもパターンがあります。
また、グローバルメニューはヘッダー以外の部分に設けているパターンもありますし、装飾についてもアンダーライン以外に、色が変化するなど、様々なページがあります。
本記事のコードを基にして、色々と試していただければと幸いです。