2012-01-17 8 views
6

私は、このようなレイアウト構造を有する: 1)まずSimpleLayoutPanel メイン(グリーンボーダー) 2)私は、メイン(赤枠にDockLayoutPanel を追加したい産む; 25のピクセルの余白)GWTのレイアウトの問題

私はこれを実装しましたが、添付ファイル(.jpg)で示された結果は、私にとっては奇妙です。 enter image description here だから、すべての赤(上、左、右、下)の境界はメインが、パネルシフト内にある必要があります。どのようにしてこのロジックを正しい方法で実装できますか?私は3〜4レベルのより複雑なUI構造を持っています。私は余裕のない仕事もしません。 enter image description here

そして、ここでは、コードとCSSです:

SimpleLayoutPanel panel = new SimpleLayoutPanel(); 
panel.setStyleName("mainModulePanel"); 
SimpleLayoutPanel p = new SimpleLayoutPanel(); 
p.setStyleName("moduleBody"); 
panel.setWidget(p); 
initWidget(panel); 

//CSS  
.moduleBody { 
/*width: 100%; 
    height: 100%;*/ 
    margin: 0px; 
    width: 100%; 
    height: 100%; 
    border: 3px solid red; 
} 

.mainModulePanel { 
/*margin-top: 5px; 
    margin-bottom: 5px; 
    margin-right: 5px;*/ 
    border: 3px solid green; 
} 
+0

私はこのバリエーションをすべてのバリエーション「LayoutPanel」で見てきました。彼らは、すべての場合においてCSSルールを右側に適用することを尊重しているようには見えません。 –

+0

私は、クローム開発ツールを開き、さまざまなコンポーネントのスタイルとサイズを調べることをお勧めします。 [要素]タブには、すべてのhtml要素に関する優れた指標が表示されます。興味のある部門を選択し、右側の指標タブを選択します。 –

答えて

4

これは境界のHTML定義に関係しています!

例を挙げて説明します。

DockLayoutPanelは500x500pxです。マージン、パディング、ボーダーが0pxの100x100%の子要素を配置します。要素のサイズは500x500pxになります。あなたは3pxの境界線を付けません。つまり、高さと幅に3pxが追加されます。したがって、要素のサイズは506x506ピクセルです。 オーバーフローは無視されます。

結果は2番目の画像です。

これは正しいhtmlの動作で、GWTとは関係ありません。

1

私は100%高さと幅の.moduleBody CSSを削除してこの問題を解決しました。 そのような状況を避けるために、子要素を100%の高さと幅でサイズするべきではありません。 ありがとうございました!

+0

これを回答としてマークして、リストの一番上に表示され、質問が解決されたことを明確に示してください。 –