代码之家  ›  专栏  ›  技术社区  ›  expenguin

如何在单击mat菜单项时禁用灰色“擦除”效果

  •  1
  • expenguin  · 技术社区  · 7 年前

    我有一个mat nav列表,里面有mat菜单项。我在我的scss中设置了一个RouterLink活动类,用于在单击某个项时更改mat菜单项文本的背景和颜色。但是,单击其中一个项目时,它会将其背景更改为浅灰色,并且只有在您单击应用程序中的其他位置后,才会显示“我的背景色”。

    Behavior of Mat-Menu-Item on click

    我想让mat菜单项背景色更改为我选择的颜色,而不使用默认的“灰色擦除”行为,这可能吗?

    如果需要,我的代码如下:

    app.html

    <mat-sidenav #sidenav mode="side" [opened]="(sideNavOpened)" class="sidenav-inner-content">
        <mat-nav-list>
            <a mat-list-item routerLink="/customers/search" routerLinkActive="active"><mat-icon>search</mat-icon> Search Customer</a>
            <a mat-list-item routerLink="/customers/create" routerLinkActive="active"><mat-icon>add</mat-icon> Create Customer</a>
        </mat-nav-list>
    </mat-sidenav>
    

    app.scss

    .active {
        border-left: 5px solid mat-color($accent);
        background-color: mat-color($primary);
        color: $light-primary-text !important;
    }
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   N.Tasikj    7 年前

    放好!重要信息:在背景色css后覆盖mat的背景色。

    .active {
        border-left: 5px solid mat-color($accent);
        background-color: mat-color($primary) !important;
        color: $light-primary-text !important;
    }
    
        2
  •  0
  •   joh04667    7 年前

    我建议不要使用 !important 只要可能。对于像Angular这样的视图封装框架,几乎不需要覆盖CSS选项。此外,覆盖墨迹效果的样式后,涟漪和行为仍然存在,只是看不见——这仍然是一个半昂贵的动画,需要花费资源和时间来完成。

    相反 MatList , MatOption MatNavList disableRipple 以消除油墨的影响。

    <mat-sidenav #sidenav mode="side" [opened]="(sideNavOpened)" class="sidenav-inner-content">
        <mat-nav-list [disableRipple]="true">
            <a mat-list-item routerLink="/customers/search" routerLinkActive="active"><mat-icon>search</mat-icon> Search Customer</a>
            <a mat-list-item routerLink="/customers/create" routerLinkActive="active"><mat-icon>add</mat-icon> Create Customer</a>
        </mat-nav-list>
    </mat-sidenav>
    

    你也可以使用 disableRipple 有选择地 mat-list-item .

        3
  •  0
  •   Gary Kelly    6 年前

    阴影是由“垫列表项波纹”和“垫波纹”引起的。我知道两种解决方案:

    1) 将以下内容添加到styles.css中:

    .mat-nav-list .mat-list-item .mat-list-item-ripple {
      visibility: hidden !important;
    }
    

    2) 或将以下内容添加到相关页面的.css中:

    ::ng-deep .mat-nav-list .mat-list-item .mat-list-item-ripple {
      visibility: hidden !important;
    }