212

以下に示すマークアップでは、コンテンツ div をページの一番下まで引き伸ばそうとしていますが、表示するコンテンツがある場合にのみ引き伸ばされます。これを行う理由は、表示するコンテンツがない場合でも、垂直方向の境界線がページの下に表示されるようにするためです。

これが私のデモです:

body {
    font-family: Trebuchet MS, Verdana, MS Sans Serif;
    font-size:0.9em;
    margin:0;
    padding:0;
}
div#header {
    width: 100%;
    height: 100px;
}
#header a {
    background-position: 100px 30px;
    background: transparent url(site-style-images/sitelogo.jpg) no-repeat fixed 100px 30px;
    height: 80px;
    display: block;
}
#header, #menuwrapper {
    background-repeat: repeat;
    background-image: url(site-style-images/darkblue_background_color.jpg);
}
#menu #menuwrapper {
    height:25px;
}
div#menuwrapper {
    width:100%
}
#menu, #content {
    width:1024px;
    margin: 0 auto;
}
div#menu {
    height: 25px;
    background-color:#50657a;
}
<form id="form1">
  <div id="header">
      <a title="Home" href="index.html" />
  </div>

  <div id="menuwrapper">
      <div id="menu">
      </div>
  </div>

  <div id="content">
  </div>
</form>

4

18 に答える 18

118

あなたの問題は、div が 100% の高さではないことではなく、その周りのコンテナーがそうではないことです。これは、使用していると思われるブラウザーで役立ちます。

html,body { height:100%; }

パディングとマージンも調整する必要があるかもしれませんが、これで 90% はうまくいきます。

このサイトにはいくつかの優れた例があります:

http://www.brunildo.org/test/html_body_0.html
http://www.brunildo.org/test/html_body_11b.html
http://www.brunildo.org/test/index.html

また、 http://quirksmode.org/に行くことをお勧めします。

于 2009-02-23T20:09:13.557 に答える
19

次の CSS ルールを試してみてください。

#content {
    min-height: 600px;
    height: auto !important;
    height: 600px;
}

ページに合わせて高さを変更します。高さについては、ブラウザー間の互換性のために 2 回言及されています。

于 2008-09-29T04:47:19.797 に答える
6

min-height宣言でちょっとハックできます

<div style="min-height: 100%">stuff</div>
于 2008-09-29T04:44:24.047 に答える
3

高さが固定された固定フッター:

HTMLスキーム:

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

CSS:

html, body {
    height: 100%;
}
#wrap {
    min-height: 100%;
    height: auto !important;
    height: 100%;
    margin: 0 auto -60px;
}
#footer {
    height: 60px;
}
于 2013-08-15T08:42:15.450 に答える
3

Ryan Fait の "Sticky Footer" ソリューションを試してください。

http://ryanfait.com/sticky-footer/
http://ryanfait.com/resources/footer-stick-to-bottom-of-page/

IE、Firefox、Chrome、Safari、おそらく Opera でも動作しますが、テストしていません。それは素晴らしい解決策です。実装が非常に簡単で信頼性があります。

于 2009-07-25T23:44:10.337 に答える
3

試す:

html, body {
    height: 102%;
}
.wrapper {
    position: relative;
    height: 100%;
    width: 100%;
}
.div {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1000px;
    min-height: 100%;
}

まだテストしていません...

于 2011-03-07T23:10:28.757 に答える
3

min-height プロパティは、すべてのブラウザーでサポートされているわけではありません。長いページで #content の高さを拡張する必要がある場合は、height プロパティを使用すると短くなります。

ちょっとしたハックですが、#content div 内に幅 1 ピクセル、高さ 1000 ピクセルの空の div を追加できます。これにより、コンテンツの高さが少なくとも 1000 ピクセルになり、必要に応じてより長いコンテンツの高さを拡張できます。

于 2008-09-29T07:00:54.797 に答える
3

純粋な CSS ほどエレガントではありませんが、JavaScript を少し使用すると、これを実現できます。

<html>
<head>
<style type='text/css'>
    div {
        border: 1px solid #000000;
    } 
</style>
<script type='text/javascript'>

    function expandToWindow(element) {
         var margin = 10; 

         if (element.style.height < window.innerHeight) { 
            element.style.height = window.innerHeight - (2 * margin) 
         }
    }


</script>
</head>
<body onload='expandToWindow(document.getElementById("content"));'>
<div id='content'>Hello World</div>
</body>
</html>
于 2008-09-30T03:39:18.517 に答える
3

要素自体とその親の min-height プロパティには、長さの単位「vh」を使用できます。IE9 以降でサポートされています。

<body class="full-height">
    <form id="form1">
    <div id="header">
        <a title="Home" href="index.html" />
    </div>

    <div id="menuwrapper">
        <div id="menu">
        </div>
    </div>

    <div id="content" class="full-height">
    </div>
</body>

CSS:

.full-height {
    min-height: 100vh;
    box-sizing: border-box;
}
于 2016-03-10T15:40:03.420 に答える
2

http://mystrd.at/modern-clean-css-sticky-footer/ を試してください

上記のリンクはダウンしていますが、このリンクhttps://stackoverflow.com/a/18066619/1944643は問題ありません。:D

デモ:

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <meta name="author" content="http://mystrd.at">
    <meta name="robots" content="noindex, nofollow">
    <title>James Dean CSS Sticky Footer</title>
    <style type="text/css">
        html {
            position: relative;
            min-height: 100%;
        }
        body {
            margin: 0 0 100px;
            /* bottom = footer height */
            padding: 25px;
        }
        footer {
            background-color: orange;
            position: absolute;
            left: 0;
            bottom: 0;
            height: 100px;
            width: 100%;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <article>
        <!-- or <div class="container">, etc. -->
        <h1>James Dean CSS Sticky Footer</h1>

        <p>Blah blah blah blah</p>
        <p>More blah blah blah</p>
    </article>
    <footer>
        <h1>Footer Content</h1>
    </footer>
</body>

</html>
于 2013-08-04T06:22:37.093 に答える
1

html を 100% 塗りつぶすだけでも問題は修正されると思います。ボディは html の 100% を塗りつぶしますが、html は画面の 100% を塗りつぶしません。

試してみてください:

html, body {
      height: 100%;
}
于 2016-08-08T08:38:24.380 に答える
0

また、これも好きかもしれません: http://matthewjamestaylor.com/blog/ultimate-2-column-left-menu-pixels.htm

それはあなたが求めたものではありませんが、あなたのニーズにも合っているかもしれません.

于 2008-09-29T04:46:43.650 に答える
0

スタイルシート (CSS) だけを使用してこれを実現することはできません。一部のブラウザは受け付けません

height: 100%;

ブラウザ ウィンドウの視点よりも高い値として。

前述のように、Javascript は最も簡単なクロス ブラウザー ソリューションですが、クリーンでも美しいものでもありません。

于 2011-09-28T09:51:08.077 に答える
0

レイアウトがどのように機能するかによっては、<html>要素に背景を設定しても問題が解決しない場合があります。これは常に少なくともビューポートの高さです。

于 2009-02-23T19:29:45.663 に答える
0

私はコードを持っていませんが、height:1000px と margin-bottom: -1000px; の組み合わせを使用してこれを行ったことは知っています。それを試してみてください。

于 2008-09-29T07:19:14.610 に答える
-2

これが最善の方法ではないことはわかっていますが、ヘッダー、メニューなどの位置を台無しにしないと理解できませんでした。だから....私はそれらの2つの列にテーブルを使用しました。それは迅速な修正でした。JS は必要ありません ;)

于 2011-12-02T17:30:08.223 に答える