CSSでタイトルとメニュー画面を固定する(ヘッダーとフッターの使い方)
ヘッダーとフッターとは?
「<header>~</header>」「<footer>~</footer>」はHTML5から新たに追加された要素で、それまでは「<div id="header">~</div>」「<div id="footer">~</div>」と書くのが一般的だったらしいです。以前の書き方との違いはわかりませんでした。
<!DOCTYPE html> <body> <p>ヘッダーの上</p> <header> <p>ここはヘッダーです<p> </header> <h1>表題</h1> <footer> <p>ここはフッターです<p> </footer> <p>フッターの下</p> </body>
例えば上のような場合
このようになります。(順番はそのままでヘッダーが一番上にはなりません)
つまり「IDだと書く人によってバラバラになるから統一しよう」ってことですかね。
スクロールさせずに固定する方法
これはヘッダーとフッターに限った方法ではなく、CSSのほうで要素の設定をします。
position: fixed; /*絶対位置で固定*/
top: 0px; /*上に配置*/
フッターの場合は「bottom: 0px; /*下に配置*/」
本文の部分がヘッダーとフッターに重なってしまう場合は「padding」を使って上下の余白を設定します。
padding:120px 0; /*上下に余白を取る*/
HTMLファイル
<!DOCTYPE html> <link rel="stylesheet" type="text/css" href="test.css"> <body> <header> <p>ここはヘッダーです<p> </header> <div id="main"> <h1>表題</h1> <p>1</p> <p>2</p> <p>3</p> : (省略) <p>14</p> <p>15</p> </div> <footer> ここはフッターです <ul class="footer-menu"> <li>ホーム |</li> <li>利用規約 |</li> <li>ヘルプ |</li> <li>お問い合わせ</li> </ul> <p>(c)2020 ふたり暮らし</p> </footer> </body>
test.css
header{ width: 100%; height: 120px; background-color: #1B73BA; color: white; text-align: center; position: fixed; /*絶対位置で固定*/ top: 0px; /*上に配置*/ } #main{ padding:120px 0; /*上下に余白を取る*/ } footer{ width: 100%; height: 120px; background-color: #1B73BA; color: white; text-align: center; position: fixed; /*絶対位置で固定*/ bottom: 0px; /*下に配置*/ } ul.footer-menu li { display: inline; }
出来ました!ついでに本文の部分をテーブル風にしてみます。
インデックス(見出し)を表示する方法
「<div class="table">~</table>」でクラスを作ってCSSで外枠を付けます。
border: outset 2px; /*外枠(スタイル、太さ)を付ける*/
padding:10px 20px; /*範囲内の余白(上下、左右)*/
margin: 10px 15px; /*範囲外の余白(上下、左右)*/
この見出しをいくつか疑似的に作って表示してみます。
HTMLファイル
<!DOCTYPE html> <link rel="stylesheet" type="text/css" href="test.css"> <body> <header> <p>ここはヘッダーです<p> </header> <div id="main"> <div class="table"> <h1>表題1</h1> <p>1</p> <p>2</p> <p>3</p> </div> <div class="table"> <h1>表題2</h1> <p>4</p> <p>5</p> <p>6</p> </div> : (省略) <div class="table"> <h1>表題5</h1> <p>13</p> <p>14</p> <p>15</p> </div> </div> <footer> ここはフッターです <ul class="footer-menu"> <li>ホーム |</li> <li>利用規約 |</li> <li>ヘルプ |</li> <li>お問い合わせ </li> </ul> <p>(c)2020 ふたり暮らし</p> </footer> </body>
test.css
header{ width: 100%; /*幅*/ height: 120px; /*高さ*/ background-color: #1B73BA; /*背景色*/ color: white; /*文字の色*/ text-align: center; /*中央に表示する*/ position: fixed; /*絶対位置で固定*/ top: 0px; /*上に配置*/ } #main{ padding:120px 0; /*範囲内の余白(上下、左右)*/ } .table{ border: outset 2px; /*外枠を作る(スタイル、太さ)*/ padding:10px 20px; /*範囲内の余白(上下、左右)*/ margin: 10px 15px; /*範囲外の余白(上下、左右)*/ } footer{ width: 100%; /*幅*/ height: 120px; /*高さ*/ background-color: #1B73BA; /*背景色*/ color: white; /*文字の色*/ text-align: center; /*中央に表示する*/ position: fixed; /*絶対位置で固定*/ bottom: 0px; /*下に配置*/ } ul.footer-menu li { display: inline; /*一行で表示する*/ }
それっぽくなりました。
まとめ
これでなんとか形になりそうです。あとはレイアウトをどうするかセンスの問題になってきます。デザインなど苦手なのでどこかの真似(リスペクト)して決めていきたいと思います。
↓よかったらポチッとしていってください。