2012-03-29 13 views
1

私は2つの列を持つテストサイトを持っています。両方とも絶対配置です。CSSのdivフルハイトを与える方法

http://dl.dropbox.com/u/17844821/zeug/heighttest.html

あなたが見ることができるようにそれは、スクロールバーの原因となりますので、左の列は、右の1以上のコンテンツがあります。 右の列を左の列と同じ高さにしたいので、height: 100%のCSSプロパティを付けました。

ここをスクロールすると、何が起こるかがわかります。 右の列は、ブラウザウィンドウの高さの100%に拡大され、ウェブサイト全体の高さは100%ではありません。

divを100%フルハイトにするにはどうすればよいですか? (すでに右のdivのためbottom: 0;を試して動作しません。)

注:それは私のオリジナルWebサイト全体のレイアウトのための必要条件であるとして.wrapperposition: absoluteに滞在しなければなりません。

+0

あなたが代わりに絶対位置のフロートを使用する必要があります。 –

+0

@Diodeusさて、ここでは浮動バージョンです。 http://dl.dropbox.com/u/17844821/zeug/heighttest2.html - まだ同じ問題があります。 – Timo

答えて

1

のみを使用してこの:

body { overflow:auto; margin:0; } 
.wrapper { display:table; width:100%; } 
.left, .right { display:table-cell; width:50%; } 
+0

ありがとうございますJan、本当にエレガントなソリューションのように見えますが、もし私が.wrapperを絶対的に配置する必要があればどうしますか?私のWebアプリケーションが起動すると、それを隠すために 'top:-100%'を使います。そして、リンクをクリックした後、jQueryを使ってアニメーションの遷移を介してスライドするために 'top:0'を設定します。 – Timo

+1

不透明度を使用して要素を非表示にしてください。あなたが実際に絶対を必要とするなら、jQuery $( '。left、.right')でそれをやってみてください。 、$(window).height())); –

1

あなたは本当に "ラッパー"は必要ありませんが、あなたがそれを残しておくと、100%の高さにする必要があります。

html, body{ 
    height: 100%; 
} 

body{ 
    overflow: hidden; 
} 

.red{ 
    background: red; 
} 

.blue{ 
    background: blue; 
} 

.wrapper{ 
height:100% 
} 

.left{ 
    float: left; 
    width: 50%; 
    height:100%; 
} 

.right{ 
    float: right; 
    height: 100%; 
    width: 50%; 
} 
+0

試してみてください。うまくいきませんでした。 – Timo

0

あなたは、この使用してテーブルを達成することができます。私は一部の人々がデータ表現以外のものに対してテーブルを軽蔑することを理解しています。例えば

参照くださいdabblet: http://dabblet.com/gist/2238394

CSS

.red{ 
    background: red; 
} 

.blue{ 
    background: blue; 
} 

.wrapper{ 
    overflow: auto; 
    width:100%; 
} 
td{ 
    vertical-align:top; 
} 

HTML

<table class="wrapper"> 
    <tr> 
     <td class="red"> 
      foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo 
     </td> 
     <td class="blue"> 
      foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo<br>bar<br>foo<br>foo 
     </td> 
    </tr> 
</table> 
+0

コメントしますか? – Khan

+0

私は投票しませんでしたが、意味論がないためにウェブサイトのレイアウトを作成することは、テーブルを使用することは良い考えではないことに同意します(「テーブルはテーブルです」という表です)。 div: 'display:table'と' display:table-cell'を使うと、おそらく同じ見た目の結果が得られるはずですが、まだこれらのcss属性でレイアウトをテストしています。 – Timo

+0

そうです、私の答えにしたコメントです。しかし、私はまだこれがダウンボントに値する理由は分かりません。 – Khan

関連する問題