2012-06-04 3 views
1

Мне нужно поставить 3 элемента друг под друга в центре страницы. Это не проблема с HBOX. Но мои элементы имеют разную ширину: два элемента с шириной 350 и одним элементом с шириной 1000. вот пример:выравнивание элементов в макете HBOX extjs 4

Ext.create('Ext.Viewport', { 
      layout: { 
       type: "hbox", 
       pack: "center", 
       align: "middle" 
      }, 
      items: { 
       xtype: 'container', 
       items:[{ 
        xtype: 'image', 
        height: 350, 
        width: 350, 
        src: '/images/logo.jpg' 
       },{ 
        xtype: 'image', 
        height: 350, 
        width: 350, 
        src: '/images/logo2.jpg' 
       },{ 
        xtype: 'panel', 
        width: 1000, 
        margin: '0px 0px 0px -325px', 
        frame: true, 
        autoscroll: true, 
        title: 'panel title', 
        html: 'some panel with some rows with<br /> some text' 
       }] 
      }, 
      renderTo: Ext.getBody() 
    }); 

Основная проблема - горизонтальное выравнивание элементов. Вторая проблема: нет полосы прокрутки, если разрешение экрана мало, и у меня большой текст в панели.

Хорошо, еще один пример:

Ext.create('Ext.Viewport', { 
       layout: { 
        type: "hbox", 
        pack: "center", 
        align: "middle" 
       }, 
       items: { 
        xtype: 'container', 
        items:[{ 
         xtype: 'form', 
         width: 350, 
         title: 'Form Panel', 
         items: [{ 
          xtype: 'textfield', 
          fieldLabel: 'Name' 
         }] 
        },{ 
         xtype: 'panel', 
         width: 1000, 
         frame: true, 
         autoscroll: true, 
         title: 'panel title', 
         html: 'some panel with some rows with<br /> some text' 
        }] 
       }, 
       renderTo: Ext.getBody() 
}); 

Эта панель будет точно в середине экрана, но форма не будет. P.S. Я попытался переместить макет в контейнер - он не работает

+0

Можете ли вы, пожалуйста, обновить образец кода надлежащей шириной? а также вы пытаетесь использовать vbox или hbox? – sha

+0

Мне жаль, я спешил. Этот код - мой код, поэтому я использую HBOX и mi width 350px и 1000px –

+0

снова, пожалуйста, исправьте свой вопрос - у вас есть VBOX в заголовке и тегах, но HBOX в коде. Вы также говорите о ширине, но имеете высоту в коде – sha

ответ

2
Ext.create('Ext.Viewport', { 
    layout : 'fit', 
    autoScroll : true, 
    items: { 
     xtype: 'container', 
     autoScroll : true, 
     minHeight : 1000, 
     layout: { 
      type: "vbox", 
      pack: "center", 
      align: "center" 
     }, 
     items:[{ 
      xtype: 'image', 
      height: 350, 
      width: 350, 
      src: '/images/logo.jpg' 
     },{ 
      xtype: 'image', 
      height: 350, 
      width: 350, 
      src: '/images/logo.jpg' 
     },{ 
      xtype: 'panel', 
      width: 1000, 
      margin: '0px 0px 0px -325px', 
      frame: true, 
      title: 'panel title', 
      html: 'some panel with some rows with<br /> some text' 
     }] 
    }, 
    renderTo: Ext.getBody() 
}); 

Я думаю, что, может быть, вы должны определить minHeight к контейнеру, и включают в себя расположение 'fit' к контейнеру, чтобы получить панель автопрокрутки.

А также включить макет vbox в пункты консьержа.

+0

это работало для меня: 'Ext.create ('Ext.Viewport', { макет: 'соответствие', AutoScroll: истинно, элементы: { xtype: 'контейнер', MinHeight: 845,' где 845 - это высота моего содержания. Но у меня все еще есть горизонтальный бар :( –

+0

'' сделал меня счастливым. Нет горизонтальной полосы прокрутки. –

0

Прежде всего переместите определение макета внутри контейнера. Он не имеет ничего общего с видовым окном. Во-вторых для макета Я думаю, вы должны использовать

type: 'vbox', 
align: 'center', 
pack: 'center', 

Я также думаю, что там может быть что-то с тем, как ExtJs макеты изображений - потому что, когда я попробовал ваш пример jsfiddle - изображения еще не макет в VBox, но и другие компоненты - (коробка или кнопка) будет макет штраф этого нужно просто

+0

Я попытался переместить макет в контейнер и изменить «средний» на «центр» - не работает. О изображениях ... Я опубликовал другой код с изображениями. –

+0

На полузависимой ноте изображения могут быть проблемой, поскольку при компоновке изображение еще не загружено и имеет размеры 0x0. Я должен был установить обходной путь, чтобы прослушивать загрузку, чтобы вызвать doComponentLayout на контейнере. –

Смежные вопросы