2011-03-07 11 views
9

以下ExtJSのコードは次のように、互いの左右に2つの領域を作成します。ExtJSテーブルレイアウトの2つの領域を一番上に揃える方法を教えてください。

enter image description here

を私は2つの領域がトップ整列するように、このコードを変更するには何がありますか?

<script type="text/javascript"> 

    var template_topbottom_top = new Ext.Panel({ 
     frame: false, 
     border: false, 
     header: false, 
     items: [] 
    }); 

    var template_topbottom_bottom = new Ext.Panel({ 
     frame: false, 
     border: false, 
     header: false, 
     items: [] 
    });  

    var template_topbottom = new Ext.Panel({ 
     id:'template_topbottom', 
     baseCls:'x-plain', 
     renderTo: Ext.getBody(), 
     layout:'table', 
     layoutConfig: {columns:2}, 
     defaults: { 
      frame:true, 
      style: 'margin: 10px 0 0 10px; vertical-align: top' //doesn't work 
     }, 
     items:[{ 
       width: 210, 
       height: 300, 
       frame: false, 
       border: true, 
       header: false, 
       items: [template_topbottom_top] 
      },{ 
       width: 1210, 
       height: 200, 
       frame: false, 
       border: true, 
       header: false, 
       items: [template_topbottom_bottom] 
      } 
     ] 
    }); 

    replaceComponentContent(targetRegion, template_topbottom, true); 

</script> 
+0

ヒント:コンポーネントをオーバーネストしています。 'template_topbottom'の' items'は、新しい 'items'を作成し、その配列の孤独なパネルとして置くのではなく、' template_topbottom_top'と 'template_topbottom_bottom'を直接参照する必要があります。また、アイテムに単一のコンポーネントが含まれている場合は、配列でラップする必要はありません。 –

答えて

1
<style> 
    .x-table-layout td { 
      vertical-align:top; 
    } 
</style> 
5

再利用のために、私はあなたのCSSファイルは常にトップ整列テーブルレイアウトセルにクラススタイルを追加します。

<style> 
    .x-table-layout-cell-top-align td.x-table-layout-cell { 
     vertical-align: top; 
    } 
</style> 

あなたはこのテーブルレイアウト内のテーブルを持っている場合、そのセレクタは、すべてのセルをトップ揃えしまうため、これは、テーブルのレイアウトに関連したものだけではなく、CSSのセレクタとして.table-layout tdを使用前の回答よりも優先されます。

あなたはそうのようなあなたのExt.Panelにこのクラスを追加します。

new Ext.Panel({ 
    cls: 'x-table-layout-cell-top-align', 
    layout: 'table', 
    items: [ 
     ... 
    ] 
}) 

あなたのパネルがすでにcls属性を持っている場合は、スペースを追加クラスを追加することができます。

cls: 'my-container-cls x-table-layout-cell-top-align', 
2

どちらの推奨的回答をしてもよいですそれをやる。しかし、最善の答え(少なくともExt JS 4で)は、HBoxレイアウトを使用し、align: top、レイアウト設定を使用することです。 http://docs.sencha.com/ext-js/4-0/#!/example/layout/hbox.html

行くと言うボタンをクリックしてください: '揃え:トップ'、または 'アライン:ストレッチ' ExtJSの4では

enter image description here

9

、あなたはtdAttrs設定オプションを使用することができます。

layout: { 
    type: 'table', 
    columns: 2, 
    tdAttrs: { 
     valign: 'top' 
    } 
} 
+0

私はこのオプションが最高です。 – Guus

2
  tdAttrs : { 
       style : { 
        verticalAlign : 'top' 
       } 
      } 
関連する問題