私は選択できる画像のリストを持っており、それぞれの画像の次元が異なります。アスペクト比を維持するために、私は画像の幅を設定するだけなので、ブラウザは画像の高さを決めます。残念ながら、私は高さがないので、Ext JSはコンテナに与えるべき高さが不明です。したがって、最初のイメージがレンダリングされた後にそれを更新しません。Ext JS:動的な高さのリサイズコンテナを使用した画像
次の例では、最初のイメージが正しくレンダリングされ、パネルのボディの高さが設定されています。コンボボックスで他の画像を選択すると、高さが設定されず、切り取られます。ただし、bodyClsプロパティのコメントを外してサンプルを再実行すると、そのように動作します。画像選択によって、パネルの高さが動的に変更されます。
float: left
を直接使用するのは好きではありませんが、これらのアイテムをhbox
の方法でレイアウトしたいので、これを実現する方法があるかどうか疑問に思っています。誰かがより良い解決策を持っていますか?
そして、いや、私はobject-fit
またはbackground-size: cover;
を使用したくない。ここFiddleとコードです:
Ext.application({
name: 'Fiddle',
launch: function() {
var f = Ext.create('Ext.form.Panel', {
renderTo: Ext.getBody(),
border: true,
bodyStyle: 'border-color: blue !important;',
height: 'auto',
referenceHolder: true,
// layout: {
// type: 'hbox',
// columns: 2
// },
// layout: 'fit',
defaults: {
style: 'float: left;'
},
// This style add height: 100% to the body
// bodyCls: 'blah',
margin: 5,
bodyPadding: 5,
viewModel: {
stores: {
logosStore: {
autoLoad: true,
proxy: {
url: 'data1.json',
type: 'ajax'
}
}
}
},
items: [{
xtype: 'image',
width: 200,
reference: 'blah',
hidden: true,
bind: {
src: '{record.logoSrc}',
hidden: '{!record.logoSrc}'
}
}, {
xtype: 'combobox',
valueField: 'logoFileId',
displayField: 'name',
queryMode: 'local',
forceSelection: true,
margin: '0 0 0 40',
value: 2,
listConfig: {
itemTpl: '<img src="{logoSrc}" style="max-height: 40px;" />'
},
bind: {
store: '{logosStore}',
selection: '{record}'
},
listeners: {
select: function (combo, record) {
f.getViewModel().notify();
// f.setHeight(f.lookupReference('blah').getHeight());
// f.lookupReference('blah').getEl().dom.setAttribute('background-image', 'url("' + record.get('logoSrc') + '")');
}
}
}]
})
}
});
EDIT 私のソリューションは、あなたがいる私のコンポーネントを持っていたときにブレークダウンし始めいくつかの他のコンポーネントを持つ別のコンテナで使用されます。このFiddleを参照してくださいが、MyForm
コンポーネントのclsプロパティのコメントを外すと機能します...ちょっと間違っているようですが、height: 100% !important
をすべてに追加する必要があります。たぶん私が代わりに使うことができるレイアウトがあります。
ん:
Fiddleとコード? – Tejas
「下の例」はどこですか? – scebotari66
私はすごく残念だ...私は完全に例を持っていないの間隔。それは今そこにある。 – incutonez