3

部分的に流動的なレイアウトの作成に問題があります。レイアウトの幅と高さは 100% である必要がありますが、スクロールバー (overflow: hidden;) を含めることはできません。

ここに画像の説明を入力

上の画像は、私が達成しようとしていることを示しています。ご覧のように:

  1. ヘッダーは固定する必要があります - 幅 100% の 110px。
  2. コンテナ div を介してラップされた 2 つの div。青いものは幅 130 ピクセル、高さ 100% で固定する必要があり、緑のものは液体の幅と高さ 100% である必要があります。

これが私の現在のコードです:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>
    <style type="text/css">
        * {
            padding: 0;
            margin: 0px;
            color: white;
        }
        html, body {
            height: 100%;
            width: 100%;
        }

        .spacer {
            clear: both;
        }

        #header {
            background: black;
            width: 100%;
            height: 100px;
            float: left;
        }

        #content {
            height: 88%;
            width: 100%;
            padding: 0px;
            margin: 0px;
            position: relative;
        }

        #left {
            background: #1664a0;
            height: 100%;
            width: 100px;
            float: left;
        }

        #right {
            background: #4aa016;
            height: 100%;
            float: left;
            width: 91%;
        }

    </style>
</head>
<body>

<div id="header">
    My Header
</div>
<div class="spacer"></div>
<div id="content">
    <div id="left">Left container</div>
    <div id="right">Right container</div>
</div>

</body>
</html>

このコードにはいくつかの問題があります。

  1. さまざまな解像度 (800x600、1024x768、1280x1024 など) では機能しません。
  2. 「コンテンツ」div は常にページを最後まで埋めるとは限りません。
  3. ページのサイズを変更して解像度を下げると、緑の div が青の div の下に表示されます。

私はここでひどく間違ったことをしているかもしれないと思いますが、私はデザイナーではないので、この問題を解決するための「正しい方法」を教えてくれる人はいますか?

4

2 に答える 2

4

ここを見てくださいhttp://jsfiddle.net/bmqPV/2/

左が 100px で右が 91% に設定されているため、100px が 9% より大きい場合は次の行に移動します。

編集、ここに新しいフィドルがありますhttp://jsfiddle.net/bmqPV/4/

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>
    <style type="text/css">
        * {
            padding: 0;
            margin: 0px;
            color: white;
        }
        html, body {
            height: 100%;
            width: 100%;
        }

        .spacer {
            clear: both;
        }

        #header {
            background: black;
            width: 100%;
            height: 100px;
            position: absolute;
            top: 0px;
            left: 0px;
            z-index:3;
        }

        #content {
            height: 100%;
            width: 100%;
            padding: 0;
            margin: 0px;
            position: relative;
        }

        #left {
            background: #1664a0;
            height: 100%;
            width: 100px;
            float: left;
        }

        #right {
            background: #4aa016;
            height: 100%;
            width: 100%;
        }
        #wrapper
        {
            position: relative;
            height: 100%;
            width: 100%;}
        .contentcontainer {
            padding-top:100px;
        }
    </style>
</head>
<body>
<div id="wrapper">
    <div id="header">
        My Header
    </div>
    <div id="content">
        <div id="left">
            <div class="contentcontainer">Left container</div>
        </div>
        <div id="right">
            <div class="contentcontainer">Right container</div>
        </div>
    </div>
</div>
</body>
</html>​
于 2012-04-19T23:47:09.223 に答える
0

理解を深めるために、#contentと#rightで位置を定義する単純なCSSを使用して結果を得ることができます。単純なコードを参照してください:-

    <!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
{
            padding: 0;
            margin: 0px;
            color: white;
        }
        html, body {
            height: 100%;
            width: 100%;
        }


        #header {
            background: black;
            height: 100px;
        }

        #content {
           width:100%;
           border:5px solid red;
           overflow:hidden;
           position:relative;

        }

        #left {
            background: #1664a0;
            height: 100%;
            width: 130px;
            float: left;
        }

        #right {
            background: #4aa016;
            height: 100%;
            float: left;
            width:100%;
            position:absolute;
            margin-left:130px;
        }

</style>
</head>
<body>
<div id="header">
    My Header
</div>

<div id="content">
    <div id="left">Left container</div>
    <div id="right">Right container</div>
</div>

</body>
</html>

デモを参照してください:- http://jsbin.com/ajasey/17/edit

于 2012-04-20T05:07:25.030 に答える