Angular 4 - 顶部导航栏没有锁定在顶部

时间:2017-06-27 15:37:08

标签: html css angular angular-material2

我无法找到一种方法来锁定顶部导航栏以保持在屏幕顶部。当页面太长时,则启用滚动。我试图禁止顶部导航栏滚动并将其固定在屏幕顶部。

下面的相关文件:

app.component.html

<div class="sidenavContainer" [class.app-dark-theme]="isDarkTheme" [class.app-candy-theme]="isCandyTheme" [class.app-custom-theme]="isCustomTheme">
    <md-sidenav-container class="sidenavContainer">
        <md-sidenav class="left-nav" id="leftNav" color="primary" #sidenav mode="over">
            <md-toolbar layout="row" color="primary">
                <h2>
                    <span>Side Panel</span>
                </h2>
                <span class="nav-spacer"></span>

                <md-button class="close-icon" (click)=sidenav.close()>
                    <md-icon>close</md-icon>
                </md-button>
            </md-toolbar>
            <nav-menu (onSelected)="setTheme($event)"></nav-menu>
        </md-sidenav>

        <md-toolbar class="top-nav" color="primary">
            <button md-button (click)="sidenav.toggle()">
                <md-icon>menu</md-icon>
            </button>

            <div id="navBarTitle">Dashboard</div>
            <span class="nav-spacer"></span>
            <div>Signed in as: AdminUser</div>
            <md-icon class="nav-icon">
                <div routerLink="/settings" mdTooltip="Settings">settings</div>
            </md-icon>
            <md-icon class="nav-icon" mdTooltip="Help">help</md-icon>
        </md-toolbar>

        <div class="router-container">
            <router-outlet></router-outlet>
        </div>
    </md-sidenav-container>
</div>

app.component.css

.sidenavContainer {
    height: 100%;
    width: 100%;
}

/deep/ .mat-sidenav-transition .mat-sidenav-backdrop.mat-sidenav-shown {
    background: rgba(0, 0, 0, 0.1);
}

.close-icon {
    cursor: pointer;
    margin-top: 9px;
}

.top-nav {
    position: fixed;
    width: 100%;
    height: 64px;
    top: 0px;
}

.nav-icon {
    padding: 0 15px;
    cursor: pointer;
}

.router-container {
    width: 100%;
    position: relative;
    top: 64px;
}

由于某种原因,位置:固定;似乎不起作用。

1 个答案:

答案 0 :(得分:1)

因此,您似乎只需要使用绝对定位来实现这一目标。

app.component.css

.sidenavContainer {
    height: 100%;
}

/deep/ .mat-sidenav-transition .mat-sidenav-backdrop.mat-sidenav-shown {
    background: rgba(0, 0, 0, 0.1);
}

.close-icon {
    cursor: pointer;
    margin-top: 9px;
}

.top-nav {
    height: 64px;
    position: fixed;
    top: 0px;
}

.router-container {
    width: 100%;
    overflow: auto;
    position: absolute;
    bottom: 0;
    top: 64px;
}

.nav-icon {
    padding: 0 15px;
    cursor: pointer;
}

app.component.html

<div class="sidenavContainer" [class.app-dark-theme]="isDarkTheme" [class.app-candy-theme]="isCandyTheme" [class.app-custom-theme]="isCustomTheme">
    <md-sidenav-container class="sidenavContainer">
        <md-sidenav class="left-nav" id="leftNav" color="primary" #sidenav mode="over">
            <md-toolbar layout="row" color="primary">
                <h2>
                    <span>Side Panel</span>
                </h2>
                <span class="nav-spacer"></span>

                <md-button class="close-icon" (click)=sidenav.close()>
                    <md-icon>close</md-icon>
                </md-button>
            </md-toolbar>
            <nav-menu (onSelected)="setTheme($event)"></nav-menu>
        </md-sidenav>

        <md-toolbar class="top-nav" color="primary">
            <button md-button (click)="sidenav.toggle()">
                <md-icon>menu</md-icon>
            </button>

            <div id="navBarTitle">Dashboard</div>
            <span class="nav-spacer"></span>
            <div>Signed in as: AdminUser</div>
            <md-icon class="nav-icon">
                <div routerLink="/settings" mdTooltip="Settings">settings</div>
            </md-icon>
            <md-icon class="nav-icon" mdTooltip="Help">help</md-icon>
        </md-toolbar>

        <div class="router-container">
            <router-outlet></router-outlet>
        </div>
    </md-sidenav-container>
</div>

这实现了我想要的功能,让底栏保持锁定在顶部,而不是覆盖在主要内容的顶部。