- 2010/5/23 日曜日 5:47:39
- Ext | JavaScript
ども、小堤です。
さて、ちょっとコードばっかり書いてて、ちょっとつかれたのでブログを。めずらしい・・。
みなさんは、Ext JSのフィールドをレイアウトする場合、何にレイアウトしますか?Ext.form.FormPanelですか?Ext.Panelですか?サンプルは、FormPanelにレイアウトしていることが多いですね。これは、FormPanelのアイテムにフィールドを設定すると、フォームレイアウトでレイアウトされるからです。
では、Ext.Panelにレイアウトしてはいけないのでしょうか?
そんなことはありません。
Ext.Panelにレイアウトしてもかまいません。しかし、その場合、レイアウトも指定しないと、FormPanelに配置したようにはなりません。
layout: ‘form’
としてあげる必要があります。
さて、ここまでは超初心者でも知ってる話ですんで、どーでもいんですが。
注意すべき点があります。
Ext.Panelの初期xtypeはExt.Panelであるということと、レイアウトは、containerレイアウトである。という点です。
何が言いたいかというと。
Ext.Panel内のアイテムで次々レイアウトを切って、フィールドをぶっこんでいくと、全部パネルでレイアウトされるんですね。
そうした場合、まず、ボーダー引かれます。うざいです。背景色も指定されてしまいます。結論から言うと、大枠は、Ext.Panelでよいのですが、その中にcolumレイアウトなどをいれたりしてレイアウトを行う場合、必ずExt.Containerクラスをxtypeで指定するようにします。
こうすることで、フィールドのレンダリングスピードが向上します。
layout: ‘column’,
items: [{
xtype: 'container',
columnWidth: .5,
items: [{
xtype: 'textfield'
}]
},{
xtype: ‘container’,
columnWidth: .5,
items: [{
xtype: 'textfield'
}]
}]
ざっくりかくと上記のようになります。(インデントきいてませんがw)
Ext JSのレイアウトは、コンテナーに対して、ネストしながらレイアウトを行っていきますが、この枠がすべてExt.PanelになるかExt.Containerになるかで、パフォーマンスは結構違います。
また、Ext.Containerの場合、bodyが存在しないので、背景がきれいに透けます。なので、大枠で背景を指定して、ちゃんと透けてくれるわけですね。
余計なボーダー消したりとかのコードも必要ないですし、パフォーマンスもよいですし。
ホントは、もうちょいいろいろあるんですが、簡単なテクニックとして、レイアウトするときは、だまってExt.Containerを指定する。覚えておいておくといいですよ。
- Newer: Ext.ux.Portalのスタイル指定
- Older: Ext JSにおけるアプリケーション開発術
Trackbacks:1
- Trackback URL for this entry
- http://code.xenophy.com/wp-trackback.php?p=919
- Listed below are links to weblogs that reference
- フィールドをレイアウトするのは? from code:x
- pingback from Free Writing » xtypeにcontainerを指定した場合の描画速度 2010/5/31 月曜日
[...] 詳しい内容については、小堤さんのブログで紹介されています。 [...]