Raf*_*ero 15 css sass vaadin vaadin7 vaadin-valo-theme
如何在Vaadin中创建VerticalMenu或Sidebar?是否有任何特定组件或我是否以编程方式使用CSS?
我想创建像Vaadin Demo这样的东西:

我正在使用新的Valo主题.
Red*_*eda 10
为了能够为您的应用程序创建响应行为,您必须使用CSS.像Zigac一样,Vaadin已经为某些组件编写了一些样式(例如我们的菜单),但是你最终想申请更多...
查看具有Valo主题和响应性的新仪表板演示!这是一个更全面的样式组件示例,并实现与Valo Theme Demo相同的逻辑.您可以在此处查看源代码
基本上它的作用是将菜单创建为CustomComponent,将内容区域创建为CssLayout.只要在菜单中单击某个组件,它就会调用MainView内容区域中的相应视图
例如,其中一个视图是DashboardView,它是用户看到的第一个视图.它是一个响应式VerticalLayout,具有响应的组件.
您可以在此处查看不同视图的样式技术(在Sass中)
以下是一些代码:
MainView.java
public class MainView extends HorizontalLayout {
public MainView() {
//This is the root of teh application it
//extends a HorizontalLayout
setSizeFull();
addStyleName("mainview");
//here we add the Menu component
addComponent(new DashboardMenu());
//add the content area and style
ComponentContainer content = new CssLayout();
content.addStyleName("view-content");
content.setSizeFull();
addComponent(content);
setExpandRatio(content, 1.0f);
new DashboardNavigator(content);
}
}
Run Code Online (Sandbox Code Playgroud)
DashboardMenu.java
public DashboardMenu() {
addStyleName("valo-menu");
setSizeUndefined();
DashboardEventBus.register(this);
//add components to the menu (buttons, images..etc)
setCompositionRoot(buildContent());
}
Run Code Online (Sandbox Code Playgroud)
DashboardView.java
public DashboardView() {
addStyleName(ValoTheme.PANEL_BORDERLESS);
setSizeFull();
DashboardEventBus.register(this);
root = new VerticalLayout();
root.setSizeFull();
root.setMargin(true);
root.addStyleName("dashboard-view");
setContent(root);
//this allows you to use responsive styles
//on the root element
Responsive.makeResponsive(root);
//build your dashboard view
root.addComponent(buildHeader());
root.addComponent(buildSparklines());
Component content = buildContent();
root.addComponent(content);
//set the content area position on screen
root.setExpandRatio(content, 1);
...
Run Code Online (Sandbox Code Playgroud)
这是样式表中的styleName"dashboard-view"
dashboardview.scss
@mixin dashboard-dashboard-view {
.dashboard-view.dashboard-view {
//Styles for all devices
padding: $view-padding;
overflow: visible;
.sparks {
@include valo-panel-style;
margin-bottom: round($view-padding / 3);
//styles for a tablet
@include width-range($max: 680px) {
.spark {
width: 50%;
}
.spark:nth-child(2n+1) {
border-left: none;
}
.spark:nth-child(n+3) {
border-top: valo-border($strength: 0.3);
}
}
...
Run Code Online (Sandbox Code Playgroud)
对于那个确切的设计,您不需要CSS编码,所有样式都提供了编译的Valo主题.您只需在组件和布局上使用适当的样式.
GIT链接的确切(Vaadin演示)实现:
ValoThemeUI.java - 页面上的布局valo菜单
ValoMenuLayout.java - 在valo-menu中布局组件