首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果图像在Sidenav中,则材料sidenav溢出内容

如果图像在Sidenav中,则材料sidenav溢出内容
EN

Stack Overflow用户
提问于 2019-04-08 09:20:49
回答 1查看 1.6K关注 0票数 0

早上好!

我正在使用材料设计侧导航在我的角度应用程序提供页面选择给用户。侧导航首先包含一个徽标,然后是用户可以选择的所有页面-如果他已登录。

问题:如果用户没有登录,则徽标是宽度最大的元素;这会混淆页面内容的位置。页面内容被sidenav溢出,因为页面内容与页面链接而不是与徽标相关联。

如您所见,sidenav尊重徽标的宽度。内容没有。

HTML:

代码语言:javascript
复制
<mat-card>
    <mat-sidenav-container>
        <mat-sidenav #drawer mode="side" opened role="navigation">
            <mat-nav-list>
                <div class="logo-nav">
                    <img src="./assets/MyLogo.png">
                </div>
                <a id="nav-home" mat-list-item routerLink='home' routerLinkActive="active">Home</a>
                <a id="nav-schulauswahl" mat-list-item routerLink='page1' routerLinkActive="active" *ngIf="loggedIn">
                    Page 1
                </a>
                <a id="nav-schule-list" mat-list-item routerLink='page2' routerLinkActive="active" *ngIf="loggedIn">
                    Page 2 with very long name
                </a>
                <a id="nav-logout" mat-list-item (click)='logout()' routerLinkActive="active">Logout</a>
            </mat-nav-list>
        </mat-sidenav>

        <mat-sidenav-content>
            Some Content
        </mat-sidenav-content>
    </mat-sidenav-container>
</mat-card>

打字本:

代码语言:javascript
复制
import { Component } from '@angular/core';

@Component({
    selector: 'my-sidenav',
    templateUrl: './sidenav.component.html',
    styleUrls: ['./sidenav.component.scss']
})
export class SidenavComponent {

    get loggedIn(): boolean {
        return true; // <- Toogle this to see all page links
    }
}

问题的核心是:margin-left of mat-sidenav-content计算错误。作为解决办法,我将其硬编码为230 in,但如果用户没有登录,这当然会在sidenav和内容之间产生一个丑陋的差距:

CSS:

代码语言:javascript
复制
@import '../../styles/colors.scss';

.logo-nav {
    width: 100%;
    text-align: center;
}

// Workaround
mat-sidenav-content {
    margin-left: 230px !important;
}

如果用户已登录,则会出现较长的页名,从而使计算的left-margin正确。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-08 09:38:35

有多种方法可以解决这个问题。例如:

  1. width属性应用于徽标图像。可以是您使用过的100%230px
代码语言:javascript
复制
.logo-nav img {
  min-width: 230px;
}
  1. width属性设置为sidenav本身。https://material.angular.io/components/sidenav/overview#setting-the-sidenav-39-s-size
代码语言:javascript
复制
.mat-sidenav {
  width: 230px;
}
  1. mat-nav-list的显示更改为具有column方向的flex
代码语言:javascript
复制
.mat-nav-list {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55570057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档