首页 > 解决方案 > 如何更改导航栏的背景颜色 - Vaadin

问题描述

我正在使用AppLayoutVaadin 中的课程。我想知道如何更改导航栏中的背景颜色。

我知道如何在 Vaadin 中添加 CSS 样式,但我无法访问导航类。

这是我的代码。如您所见,我一直在使用方法setClassName。但是我在哪里可以找到导航栏的方法呢?

@Viewport("width=device-width, minimum-scale=1, initial-scale=1, user-scalable=yes, viewport-fit=cover")
@PWA(name = "Hemsida", shortName = "Hem")
@Route("")
@CssImport("./CSS/MainView.css")
public class MainView extends AppLayout {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public MainView() {

        // Image bar
        Image barImage = new Image("img/cropped-logo_liggande_rod.png", "Spektrakon Logo");
        barImage.setClassName("barImage");

        // Drawer
        DrawerToggle drawerToggle = new DrawerToggle();
        drawerToggle.setClassName("drawerToggle");


        addToNavbar(barImage, drawerToggle);


        Tabs tabs = new Tabs(new Tab("Hem"), new Tab("Produktutveckling"), new Tab("Industriell Design"), new Tab("System"), new Tab("Kvalitet"), new Tab("Om oss"), new Tab("Intrenet"));
        tabs.setOrientation(Tabs.Orientation.VERTICAL);
        addToDrawer(tabs);
    }

}

标签: javacssvaadin

解决方案


样式部分你可以看到有一个navbar部分。您可以使用它来设置 AppLayout 的导航栏的样式


如果navbarStyles.css有:

[part~="navbar"]{
    background-color: red;
}

并使用 : 导入视图 @CssImport(value= "./styles/navbarStyles.css", themeFor = "vaadin-app-layout"),背景颜色已更改


一个完整的例子,theme用于区分其他AppLayout

@Route("")
@CssImport(value= "./styles/navbarStyles.css", themeFor = "vaadin-app-layout")
public class AppLayoutPictures extends AppLayout {

    public AppLayoutPictures(){
        setPrimarySection(AppLayout.Section.DRAWER);
        Image img = new Image("https://i.imgur.com/GPpnszs.png", "Vaadin Logo");
        img.setHeight("44px");
        addToNavbar(new DrawerToggle(), img);
        Tabs tabs = new Tabs(new Tab("Home"), new Tab("About"));
        tabs.setOrientation(Tabs.Orientation.VERTICAL);
        addToDrawer(tabs);
       //Set to AppLayout, propageted to `parts`
        getElement().setAttribute("theme","appLayout");
    }

navbarStyles.css

:host([theme~="appLayout"]) [part~="navbar"]{
    background-color: orange;
}

结果在此处输入图像描述


推荐阅读