ubicación logo hacer fijo fija ejemplos dinamico detector con cabecera bootstrap java layout header vaadin footer

java - logo - menu fijo al hacer scroll css



Diseño básico de Vaadin: encabezado fijo y pie de página+contenido desplazable (1)

Soy nuevo en Vaadin e intento saber si puede satisfacer mis necesidades para una migración de proyecto de aplicaciones web. En realidad, ya estoy perdiendo mi tiempo en un objetivo simple: tener un diseño con encabezados y pies de página fijos, y un contenido desplazable en el medio. Hice un violín muy básico con lo que quiero: jsfiddle

Aquí está la clase principal de Vaadin que se me ocurrió:

public class MyVaadinUI extends UI { // attributes @WebServlet(value = "/*", asyncSupported = true) @VaadinServletConfiguration(productionMode = false, ui = MyVaadinUI.class, widgetset = "testvaadin.aep.com.AppWidgetSet") public static class Servlet extends VaadinServlet { } @Override protected void init(VaadinRequest request) { buildMainLayout(); } private void buildMainLayout() { final VerticalLayout mainLayout = new VerticalLayout(); mainLayout.setSizeFull(); //HEADER final VerticalLayout headerLayout = new VerticalLayout(); final Resource res = new ThemeResource("img/logo.png"); final Image image = new Image(null, res); headerLayout.addComponent(image); //CONTENT final VerticalLayout contentLayout = new VerticalLayout(); for(int i=0; i<80; i++){ contentLayout.addComponent(new Button("TEST " + i)); } //FOOTER final VerticalLayout footerLayout = new VerticalLayout(); footerLayout.addComponent(new Label("--------------------------- footer --------------------------")); mainLayout.addComponent(headerLayout); mainLayout.addComponent(contentLayout); mainLayout.addComponent(footerLayout); mainLayout.setExpandRatio(contentLayout, 1); setContent(mainLayout); }

}

La página que se muestra es correcta al inicio, pero cuando me desplazo hacia abajo, el pie de página también se desplaza (no está fijo).

En el arranque:

Cuando se desplaza:

Busqué en muchas páginas sobre este tema, pero nunca vi una respuesta correcta. Esto parece ser bastante complicado en Vaadin, aunque es muy simple en HTML; Vaadin puede no satisfacer mis necesidades. De todos modos, ¿sabes cómo puedo lograr este comportamiento? ¡Gracias!


Puede usar un Panel para crear un área de contenido del centro desplazable. Ej. (Ver XXX )

@Grapes([ @Grab(''org.vaadin.spring:spring-boot-vaadin:0.0.3''), @Grab(''com.vaadin:vaadin-client-compiled:7.4.0.beta1''), @Grab(''com.vaadin:vaadin-themes:7.4.0.beta1''), ]) import com.vaadin.ui.* @org.vaadin.spring.VaadinUI class MyUI extends UI { protected void init(com.vaadin.server.VaadinRequest request) { final headerLayout = new VerticalLayout(new Label(''HEADER'')) final footerLayout = new VerticalLayout(new Label(''FOOTER'')) final contentLayout = new VerticalLayout() 80.times{ contentLayout.addComponent(new Button("TEST $it")) } // XXX: place the center layout into a panel, which allows scrollbars final contentPanel = new Panel(contentLayout) contentPanel.setSizeFull() // XXX: add the panel instead of the layout final mainLayout = new VerticalLayout(headerLayout, contentPanel, footerLayout) mainLayout.setSizeFull() mainLayout.setExpandRatio(contentPanel, 1) setContent(mainLayout) } }

(funciona de forma independiente con la spring run vaadin.groovy )