質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.76%

  • HTML

    8348questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • CSS

    5358questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

要素が増えてもフッタをページ最下部に表示させる方法

解決済

回答 5

投稿

  • 評価
  • クリップ 0
  • VIEW 201

freeze

score 3

コンテンツの高さが表示領域に満たない場合であっても、
フッタを最下部に表示させるため、下記のようなコードを書きました。

<!DOCTYPE html>
<html lang="ja">
<head>
<title>test</title>
</head>
<body>
  <main>
    <div class="content">
    </div>
  </main>
  <footer>
  </footer>
</body>
</html>
html, body {
  margin: 0;
  padding: 0;
  width: 100%;
  height: 100%;
  background: white;
}

main {
  width: 100%;
  height: 100%;
  background: whitesmoke;
}

.content {
  padding: 60px 0 0 0;
  min-height: 60px;
  width: 100%;
  background: gray;
}

footer {
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  position: absolute;
  width: 100%;
  height: 60px;
  background: orange;
}


*動作確認⇒https://jsfiddle.net/94ej2a3p/

しかし、<div class="content">~</div>内には、動的に要素を増やしたいと考えているため、
下記のようにcontent内の要素が増えた場合、フッターの位置がおかしくなってしまいます。

<!DOCTYPE html>
<html lang="ja">
<head>
<title>test</title>
</head>
<body>
  <main>
    <div class="content">
      <br><br><br><br><br><br><br><br><br><br><br><br>
      <br><br><br><br><br><br><br><br><br><br><br><br>
    </div>
  </main>
  <footer>
  </footer>
</body>
</html>

要件としては、下記を満たしたいです。

  1. 「スクロールが発生しない範囲では、最下部にフッターを表示する」
  2. 「スクロールが発生する範囲では、スクロールした最下部にフッターを表示する」
    (スクロールに追従して常にフッターを固定表示させるわけではない)

どのように書き換えれば、フッタをページ最下部に表示させ続けることができるか、
ご教示いただきたく。よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2018/05/02 07:44

    CSSフレームワークを利用するという選択肢は考えられていないですか?

    キャンセル

  • freeze

    2018/05/02 20:46 編集

    コメントありがとうございます。この通り、CSSの理解すら曖昧なレベルですので、もう少し扱えるようになってから考えてみようと思います。

    キャンセル

回答 5

checkベストアンサー

+6

<footer>の高さが固定なので、<main>min-heightをかけて最低の高さを出せばいいでしょう(変更してみたfiddle)。

main{
  min-height: calc(100% - 60px);
}

/* footerのpositionやmarginなどは削除 */

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/02 21:22

    回答ありがとうございます。
    なるほど、理屈を聞けば単純ですが、calcという関数は初耳でした。。
    大変参考になりました。

    キャンセル

+1

goolge で "html css footer" を検索してみました。

たとえばこんなページがヒットしました。

これは情報が古いので、検索期間を 1年以内にしてみました。

こんな風に情報検索してみては?

解決してらぜひ、解決方法を投稿すると良いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/02 21:07

    回答ありがとうございます。
    この質問投稿後、今まで席を外していたため、ズバリ回答いただいてしまいました。。
    仰る通り、もう少し検索力と自己解決力を身に着ける必要はありそうです。

    キャンセル

0

footer {
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  position: absolute;
  width: 100%;
  height: 60px;
  background: orange;
}

このpositionの値を「fixed」にしては?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/02 21:01

    回答ありがとうございます。
    質問の要件にも記述している通り、今回はスクロールに追従して常にフッターを
    固定表示させるわけではありません。。分かり辛くて申し訳ないです。

    キャンセル

0

こんにちは!

こちらでいかがでしょうか。
jsFiddle
差分はこちら

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/02 21:29 編集

    回答ありがとうございます。
    拝見しましたが、mainをmin-heightにして、その分フッターを押し上げれば良かったんですね。。

    ただ、他の方の回答と比べてしまい恐縮ですが、フッターの高さ分、
    mainと被ってしまうことを考えると、maisumakunさんのほうが使い勝手が良いように感じました。

    キャンセル

  • 2018/05/02 22:23

    被った分はフッターの高さ分マージンを付与してあげれば大丈夫ですよ。この手のやり方はたくさんあるので状況によって使い分けて下さい。

    キャンセル

-3

htmlとbodyにmin-height:100%;とか100vhでできないんでしたっけ?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    画面いっぱいに背景画像を表示したい

    説明しにくいのですが、画面いっぱいというのは開いた時のウインドウサイズのことです。 イメージでいうとこちらのサイトのようなものを作ろうとしています。スクロールするとコンテンツが見え

  • 解決済

    CSSでnavを左によせたい

    navを左に寄せたい navを左に寄せたいのですがしたに表示されます。左に表示する方法を教えてください html{ margin:0; padding:0;height:100

  • 解決済

    navのタブメニューの要素が、ずっと表示されてしまいます。

    navのtab-changeクラスにおいて、#howtoseeを、タブがクリックした時だけ表示するようにしたいのですが、他の2つの#this-weekと#todayをクリックした時

  • 解決済

    ページ上部にスクロール設定について

    ページの右下に、クリックするとページ上部に行く設定をしたのですが、スクロール位置を1000以下にすると非表示に設定をhead内に記述したのですが実行できません。 ご教授頂けますと嬉

  • 受付中

    レスポンシブルデザインについて

    ページ上部のメニューをクリックしたらスマホのサイトのようなメニューバーを表示させたいのですがどうすればよろしいでしょうか。 ちなみにこちらのサイトを参考にしました https://

  • 解決済

    HTMLで作成している検索ボックスの入力欄の高さを広げたいです。

    前提・実現したいこと HTMLで作成している検索ボックスの入力欄の高さを広げたいですが 広げることができません。 cssで設定しているのですが上手くいかないのでご教授いただけた

  • 受付中

    スクロール不可のサイト作成方法

    ウェブサイトで制限を通知する際にスクロールできない様にしてるサイトを見かけます。あれはどうやっているんでしょうか? 皆目見当も付かないのでご教授お願いします。

  • 受付中

    Flex boxで左右均等配置しつつ回り込んだ要素を左寄せにしたい

    6つの同じサイズの要素をFlexで並べています。 ウインドウサイズや解像度によって3×2列、4と2の2列、5と1の2列、6の1列 と変動するのですが justify-content

同じタグがついた質問を見る

  • HTML

    8348questions

    HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

  • CSS

    5358questions

    CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。