Hey Päivärinne,
Thanks for your answer. But, I am looking for some kind of animation in the menu… for example, when somebody hovers in the menu… it should automatically display horizontal sub-menu…like in e.g. below:
Hey Päivärinne,
Thanks for your answer. But, I am looking for some kind of animation in the menu… for example, when somebody hovers in the menu… it should automatically display horizontal sub-menu…like in e.g. below:
Hey Keto,
Well, you could just replicate something similar in Vaadin. Just as a proof of concept:
@Override
protected void init(VaadinRequest request) {
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
layout.setSizeFull();
setContent(layout);
CssLayout menu = new CssLayout();
menu.setStyleName("menu");
menu.setWidth("100%");
for (int i = 0; i < 5; i++) {
menu.addComponent(createMenuItem(i));
}
layout.addComponent(menu);
}
private Component createMenuItem(int id) {
Button btn = new Button("Item " + id);
btn.setStyleName(ValoTheme.BUTTON_BORDERLESS + " "
+ ValoTheme.BUTTON_SMALL);
CssLayout subMenu = new CssLayout();
subMenu.setStyleName("sub-menu");
for (int i = 0; i < 5; i++) {
Button subMenuItem = new Button("Sub-item " + id + " " + i);
subMenuItem.setStyleName(ValoTheme.BUTTON_BORDERLESS + " "
+ ValoTheme.BUTTON_SMALL);
subMenu.addComponent(subMenuItem);
}
CssLayout menuItem = new CssLayout(btn, subMenu);
menuItem.setStyleName("menu-item");
return menuItem;
}
SCSS
.menu {
position: relative;
}
.menu-item:hover .sub-menu {
opacity: 1;
visibility: visible;
}
.sub-menu {
display: block;
left: 0;
opacity: 0;
position: absolute;
transition: opacity 0.1s ease-in;
visibility: hidden;
width: 100%;
}
Hey Päivärinne,
Thank you for your help… It works nicely like Vaadin menu style however, can it be tweaked like in Example 4 here:
http://themedemos.dottoro.com/features/menu/horizontal-submenu/
Hey Keto,
Yes, it can definitely be tweaked to look/behave like that. But I will leave that to you.
You can use Chrome’s or Firefox’s inspector to get the example menu’s stylesheet. Then simply “adjust” it to fit your DOM structure.
Hey Päivärinne,
Thanks for your solution. I am still having some difficulty in tweaking that menu structure. You’re right that I have to look at DOM structure and adjust that…
I changed SCSS to
.menu-item {
position: none;
background-color: #EB0973;
&:hover .sub-menu {
opacity: 1;
}
}
and it does show menu structure in horizontal format… I don’t know … how to accomplish such effect.
Hi
How do you remove the transperency of the sub-menu?
Hey Keto,
You could define a background-color for sub-menu.
Thanks. It works as expected now.