Codeworks Notes

 2019-08-29

 2023-03-23

Webデザイン
CSS
フロントエンド

フッターをウィンドウ下部に固定する

コンテンツ量が少ない時にフッターがウィンドウ中段に表示されると、それより下の部分が寂しいので、縦幅が足りてない時でもフッターがウィンドウ最下部に表示され、ただの fixed 配置と違ってスクロールでウィンドウ外に逃がせるようにする手順です。

方法は2つあります。

jQuery でやると手間がかからないですが、ページ表示の最初にコンテンツの高さを取得してからコンテンツ下部にフッターを移動するので一瞬だけ本来の位置にフッターが表示されます。

CSS で実装する方法

HTML

フッターを含むコンテンツを div で wrap します。

<body>
  <div id="wrap">
    <footer>hoge</footer>
  </div>
</body>

CSS

スタイルの指定は以下。

html, body { height: 100% }

#wrap {
  position: relative;
  height: auto;
  min-height: 100%;
  padding-bottom: 60px; /* フッターの高さ */
}

footer {
  position: absolute;
  bottom: 0;
}

親要素の高さを 100% で確保する。

ウィンドウの高さいっぱいに親要素の領域を確保する必要があります。
その上でラッパーの高さも100%にします。

footer は fixed ではなく absolute で

ウィンドウ固定は fixed !っていう考え方もありますが、どこまでも付いてくるのはコンテンツによっては鬱陶しくなるので、にしたくもなりますが、100% の縦幅を取ったラッパーの一番下に footer を置くので absolute にして bottom を 0 にします。

このとき footer の縦幅分だけコンテンツが footer と重なるので、ラッパーの下端に同幅の padding を取って位置を調整します。

jQuery で実装する方法

あらかじめ footerFixed.js を入手しましょう。

[ to-R ] footerをウィンドウ下部に固定する『footerFixed.js』

HTML

フッターに id="footer" を付加。wrapper は要らん。
jQuery と footerFixed.js を読み込ませておきます。

<head>
  <script type="text/javascript" src="jquery.3.6.0.min.js">
  <script type="text/javascript" src="footerFixed.js">
</head>
<body>
  <!-- コンテンツが入る -->
  <footer id="footer">hoge</footer>
</body>

結局これ何やってんの?

コンテンツとウィンドウの高さとフッターの高さをリアルタイムで取得して自動で下にはめ込んでる。
ウィンドウサイズ変えても追従してくる。

人間が計算する必要がないのでエクストリーム楽。