1

最も古いブラウザーでさえも満足させるために、複数のゆがみを必要とする 1001 の CSS フッター ハックがあることを私は知っています。

しかし、最新の標準に準拠したブラウザー用にフッターを作成する方法を知りたいです。次のコードが機能することを期待していましたが、機能しません。フッターはページの下部ではなく、「コンテンツ」のすぐ下にあります。なんで?

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Footer Test</title>
    <style type="text/css">
        html
        {
            height: 100%;
            margin: 0;
            padding: 0;
        }
        body
        {
            height: 100%;
            min-height: 100%;
            margin: 0;
            padding: 0;
        }
        #page
        {
            position: relative; /* <--- relative position for footer's parent */
            height: 100%;
            background-color: #AAA;
        }
        #header
        {
            height: 3em;
            margin: 0;
            padding: 1em;
            background-color: #F00;
        }
        #content
        {
            margin: 0;
            padding: 1em;
            background-color: #0F0;
        }
        #footer
        {
            position: relative;
            bottom: 0; /* <--- distance from #footer's bottom to #page's bottom  */
            height: 3em;
            margin: 0;
            padding: 1em;
            background-color: #00F;
        }
    </style>
</head>
<body>
    <div id="page">
        <div id="header">
            <p>This is the header!</p>
        </div>
        <div id="content">
            <p>Yeah, some content!</p>
            <p>Yeah, some content!</p>
            <p>Yeah, some content!</p>
        </div>
        <div id="footer">
            <p>This is the footer!</p>
        </div>
    </div>
</body>
</html>

編集:

明確化: フッターをビューポートの下部に配置したい。そのため、コンテンツが少ない場合は、コンテンツの下に隙間があり、フッターはページの下部にある必要があります。ただし、コンテンツが多い場合はスクロールバーを表示し、フッターは下にスクロールしたときにのみ表示されるようにする必要があります。

4

3 に答える 3

0

元のバージョンが機能しなかった理由はまだわかりません...

しかし、次のコードはハッキングされておらず、機能しているようです。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Footer Test</title>
    <style type="text/css">
        html 
        {
            height: 100%;
            margin: 0;
            padding: 0;
        }

        body 
        {
            margin: 0;
            padding: 0;
        }

        #page 
        {
            min-height: 100%;
            width: 100%;
            position: absolute; 
            background-color: #AAA;
        }

        #header 
        {
            padding: 1em;
            background-color: #F00;
        }

        #content 
        {
            margin-bottom: 5em; /* <--- footer's height */
            padding: 1em;
            background-color: #0F0;
        }

        #footer 
        {
            width: 100%;
            position: absolute;
            bottom: 0;
            background-color: #00F;
        }

        #footer > *
        {
            padding: 1em; /* <--- additional rule for footer's content */
        }
    </style>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>
    <script type="text/javascript">
    $(document).ready(function() { $("button").click(function() { $("#hidden").slideToggle(1000); }) });
    </script>
</head>
<body>
    <div id="page">
        <div id="header">
            <p>This is the header!</p>
        </div>
        <div id="content">
            <p>Yeah, some content!</p>
            <p>Yeah, some content!</p>
            <p>Yeah, some content!</p>
            <button>Push the footer!</button>
            <div id="hidden" style="display: none">
                <p>Begin of extra content</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>Much hidden content!</p>
                <p>End of extra content</p>
            </div>
        </div>
        <div id="footer">
            <p>This is the footer!</p>
        </div>
    </div>
</body>
</html>

気に入らない点:

  • コンテンツはフッターの高さを知る必要があります。

  • フッターのコンテンツには追加のルールが必要です。

于 2013-07-05T19:55:50.790 に答える