めちゃくちゃですよね?心配しないでください。あなたの質問は今も昔も有効です。質問に答えることに集中しましょう。
自由に 3 つの例を作成しました1 :
きちんと説明できるか見てみましょう。
1残念ながら、新しい CSS3 プロパティに従ってサイズ変更可能にすることはできませんでしたresize
。
説明
そこで、基本的に 100% の高さのラッパーを使用し、一定の高さの値に対応する負のマージンと正のパディングを与える古い手法を使用しました。負のマージンと正のパディングを組み合わせると、高さが固定されたコンテンツと同じ高さの空きスペースができます。
.container{
height: 400px;
}
.wrapper{
height: 100%;
margin-top: -50px;
padding-top: 50px;
}
.content{
height: 100%;
}
.fixed_content{
height: 50px;
}
技術的には、修正されたコンテンツはラッパーから「押し出されます」が、ラッパーにはその要素を調整する負のマージンがあるため、通常の流れのように見えます。
よりよく示すために、私はこの絵を描きました。
多少の調整を加えれば、同じことを水平方向にも実行できることに注意してください。
.container{
width: 400px;
height: 400px;
}
.wrapper{
height: 100%;
width: 100%;
padding-left: 50px;
margin-left: -50px;
white-space:nowrap;
}
.content{
height: 100%;
width: 100%;
display: inline-block;
}
.fixed_content{
height: 100%;
width: 50px;
display: inline-block;
}
原則として、同じように機能します。主な違いは、オーバーフローが水平方向に配置されるように、インライン要素を同じ行に「強制」する必要があることです。とを使用してそれをwhite-space: no-wrap;
行いますdisplay: inline-block;
これは私が描いた水平方向の等価物を示す図です。
可能性は無限大!すべての固定要素の高さ/幅の合計がわかっている限り、さらに要素を追加できます。
テーブルレイアウトは弱虫向けです。すべてのクールなプログラマーはdiv
s を使用します。;)
HTML
<div class='container'>
<div class='node_1'>
<div class='wrapper'>
<div class='node_1_1'>
<div class='wrapper_2'>
<div class='node_1_1_1'></div>
<div class='node_1_1_2'></div>
</div>
</div>
<div class='node_1_2'></div>
</div>
</div>
</div>
CSS
div{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 2px;
}
.container{
border: 2px solid red;
width: 400px;
height: 400px;
margin: 0 auto;
}
.node_1{
border: 2px solid gray;
height: 100%;
}
.wrapper{
padding: 52px 0 0 0;
margin-top: -52px;
height: 100%;
}
.node_1_1{
border: 2px solid purple;
height: 100%;
}
.node_1_2{
height: 50px;
border: 2px solid #b80808;
margin-top: 2px;
}
.wrapper_2{
padding: 152px 0 0 0;
margin-top: -152px;
height: 100%;
}
.node_1_1_1{
border: 2px solid green;
height: 150px;
}
.node_1_1_2{
border: 2px solid orange;
height: 100%;
margin-top: 2px;
}
HTML
<div class='container'>
<div class='wrapper'>
<div id="content"></div>
<div id="toolbar"></div>
</div>
</div>
CSS
div{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 2px;
}
.container{
border: 2px solid red;
width: 400px;
height: 400px;
margin: 0 auto;
}
.wrapper{
height: 100%;
padding: 52px 0 0 0;
margin-top: -52px;
}
#content{
height: 100%;
border: 2px solid green;
}
#toolbar{
height: 50px;
border: 2px solid orange;
margin-top: 2px;
}
HTML
<div class='container'>
<div class='wrapper'>
<div id="content"></div>
<div id="vert-toolbar"></div>
</div>
</div>
CSS
div{
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 2px;
}
.container{
border: 2px solid red;
width: 400px;
height: 400px;
margin: 0 auto;
}
.wrapper{
height: 100%;
width: 100%;
padding: 0 52px 0 0;
margin: 0 -52px 0 0;
white-space:nowrap; /*Force elements to stay on horizontal plane*/
}
#content{
height: 100%;
width: 100%;
border: 2px solid green;
display: inline-block;
}
#vert-toolbar{
height: 100%;
width: 50px;
border: 2px solid blue;
display: inline-block;
margin-left: -2px; /*For the borders (2+2 = 4, -2 for a 2px "padding"*/
}