2016-07-13 5 views
0

Ich habe ein Problem mit der Gestaltung von Vaadin Menu.Ich möchte verschiedene Stil von Menü Popup auf einer anderen Seite haben.Das heißt, wenn Sie den Stil in einer Ansicht, es sollte nicht beeinflussen andere Menüleiste Pop-ups in anderen Ansicht. Ist es trotzdem, dass ich das erreichen kann? Ich kann dynamische CSS-Injection oder JavaScript verwenden, um zu erreichen, aber ich möchte wissen, ob es andere Möglichkeiten gibt, dies mit CSS und Vaadin API zu erreichen.Einstellung Stil für Vaadin Menü Popup in einer Ansicht ohne Auswirkungen auf andere

Jede Hilfe wird geschätzt.

Antwort

0

Dies sollte ziemlich einfach zu konfigurieren sein mit themes und Hinzufügen einer custom style to your menu bar (scrollen, um fast das Ende), zB menu.addStyleName("red");. Das folgende Beispiel ist sehr einfach, aber Sie werden die Idee bekommen.

CSS-Konfiguration in Ihr Thema:

.red { 
    background-color: red; 
} 

Beispielcode:

public class MenuBarComponent extends VerticalLayout { 
    public MenuBarComponent() { 
     MenuBar menu = new MenuBar(); 

     // add the custom style 
     menu.addStyleName("red"); 

     // A top-level menu item that opens a submenu 
     MenuBar.MenuItem drinks = menu.addItem("Beverages", null, null); 

     // Submenu item with a sub-submenu 
     MenuBar.MenuItem hots = drinks.addItem("Hot", null, null); 
     hots.addItem("Tea", null); 
     hots.addItem("Coffee", null); 

     // Another submenu item with a sub-submenu 
     MenuBar.MenuItem colds = drinks.addItem("Cold", null, null); 
     colds.addItem("Milk", null); 
     colds.addItem("Weissbier", null); 

     // Another top-level item 
     MenuBar.MenuItem snacks = menu.addItem("Snacks", null, null); 
     snacks.addItem("Weisswurst", null); 
     snacks.addItem("Bratwurst", null); 
     snacks.addItem("Currywurst", null); 

     // Yet another top-level item 
     MenuBar.MenuItem servs = menu.addItem("Services", null, null); 
     servs.addItem("Car Service", null); 

     addComponent(menu); 
    } 
} 

Ergebnis:

Sample


Update

Das Styling der v-menubar-popup ist schwierig, da dieses Element jedes Mal erstellt wird, wenn ein Menü ausgeblendet wird, aber kein benutzerdefinierter Stil angehängt wird. Unter diesen Umständen könnten Sie die folgende Problemumgehung, beginnend mit der Probe oben verwenden:

1) vollständig den primären Stil-Menü ändern:

menu.setPrimaryStyleName("custom-menubar"); 

2) In Ihrem Thema einen neuen Stil schaffen die menu-bar mixin mit und fügen eine benutzerdefinierten Stil für das Popup auch:

@include valo-menubar("custom-menubar", false); 

.custom-menubar-popup { 
    background-color: red; 
    height: 90%; // adjust as needed 
} 

3) es kann nicht perfekt sein, und Sie können die Höhe zwicken haben je nach den Elementen jedes Menü hat, weil es nicht ist länger automatisch berechnet, aber das Ergebnis sieht vielversprechend aus Result

+0

Danke für die Antwort. Aber mein Problem ist anders. Es war mein Fehler, dass ich keine Kommentare gepostet habe, die das genaue Problem erklärten. Ich möchte einen Stil auf v-menubar-popup setzen, damit ich die Höhe des Popups kontrollieren kann. Ich möchte, dass das Popup 100% hoch ist, damit es bis zum Ende des Browsers wachsen kann. Aber das Problem ist, ich habe keinen Weg gefunden, dies zu tun, ohne andere Orte zu beeinflussen. – Duke

+0

@SatyaranjanDas ist in der Tat eine andere Geschichte. Ich habe meine Antwort mit einer möglichen Problemumgehung aktualisiert, siehe den unteren Abschnitt. – Morfic

+0

Vielen Dank für die schnelle Antwort. Ich werde es einmal versuchen und im Browser einchecken. – Duke