Этот вопрос может быть более понятным, если у вас есть опыт работы с Vaadin или GWT или аналогичными, но хороших навыков CSS и веб-разработки должно быть достаточно.
У меня возникла дилемма.В представлении нашего веб-приложения у нас есть три панели, две вверху бок о бок и одна внизу, которые должны занимать столько же ширины, сколько две вышеупомянутые вместе взятые, образуя «квадрат» из трех панелей.
Вот изображение, объясняющее это:
Проблема в том, что только одна панель (вверху слева) может иметь статическую заданную ширинупотому что отображаемые там данные очень предсказуемы.Другой в правом верхнем углу будет содержать различный контент, который может варьироваться по ширине + -100 пикселей.
Теперь я хочу, чтобы нижняя панель была отрегулирована по ширине и заполняла ту же ширину, что и панели выше.
А вот и часть Vaadin (это фреймворк, в котором разрабатывается веб-приложение).Я пробовал просто иметь верхнюю панель в HorizontalLayout
, которая находится внутри VerticalLayout
вместе с нижней панелью.Я бы надеялся, что смогу установить нижнюю панель на setWidth("100%")
, и она будет регулировать ее ширину в соответствии с шириной VerticalLayout
, но, конечно, это не сработает, поскольку VerticalLayout
не имеет указанной ширины.
Затем я выполнил тест, используя GridLayout
, который был 2 × 2, где верхний ряд имел две ячейки с разметками в каждой, а нижний ряд имел нижнюю разметку в двух ячейках. Код :
GridLayout grid = new GridLayout(2, 2);
SHorizontalLayout h1 = new SHorizontalLayout();
SHorizontalLayout h2 = new SHorizontalLayout();
SHorizontalLayout h3 = new SHorizontalLayout();
h1.addComponent(new Embedded(null, new ThemeResource("../m2m/img/lock_20x20.png")));
h2.addComponent(new Embedded(null, new ThemeResource("../m2m/img/lock_20x20.png")));
h3.addComponent(new Embedded(null, new ThemeResource("../m2m/img/lock_20x20.png")));
h1.setSizeFull();
h2.setSizeFull();
h3.setSizeFull();
h1.setStyleName("test-layout1");
h2.setStyleName("test-layout2");
h3.setStyleName("test-layout3");
grid.addComponent(h1, 0, 0);
grid.addComponent(h2, 1, 0);
grid.addComponent(h3, 0, 1, 1, 1);
outerHLayout.addComponent(grid);
Это даст такой результат:
Однако нижняя ячейка имеет ширину двух верхних вместе взятыхкогда он сфокусирован в инструменте FireBug:
Но Vaadin автоматически генерирует div (<div style="float: left; margin-left: 0px;">
), который ограничивает ширину контента размером контента (даже если контентset to setSizeFull ()).
Так что я действительно хотел бы получить некоторую помощь по этой проблеме в целом, используя CSS или от кого-то, кто привык к Vaadin, чтобы помочь мне с тем, как указать сетку, чтобы она несгенерируйте этот внутренний div, ограничивающий ширину содержимого.
Если вы хотите, чтобы я предоставил дополнительную информацию, пожалуйста, спросите меня!
Я знаю, что это утомительно длинный вопрос, поэтому я бы хотелочень хочу поблагодарить вас, кто прочитал это далеко, спасибо!