【问题标题】:use mat buttons to build a nav bar in angular使用垫子按钮以角度构建导航栏
【发布时间】:2019-09-23 04:31:48
【问题描述】:

我正在用 Angular 构建一个应用程序。作为其中的一部分,我正在开发一个使用垫按钮的导航栏。

<div flexLayout="row">
  <button class="flat_button" mat-flat-button>B2-L1</button>
  <button mat-flat-button>B2-L3</button>
  <button mat-flat-button>B2-L3</button>
  <button mat-flat-button>B2-L4</button>
</div>         
.mat-flat-button {
  background-color: grey;
  border-radius: 0 px !important;
}

.mat-button {
  border-radius: 0 px !important;
}

我已经更改了按钮的背景颜色,现在如果我选择一个按钮,我希望它的颜色为白色,(无论我选择/单击什么按钮,它都应该是白色的,其余的应该是灰色的)。我已经尝试了几件事,但无法做到。有人可以帮我弄这个吗?谢谢。

【问题讨论】:

  • 你能提供一个stackblitz的最小工作演示吗?
  • 当你说select a button时,你的意思是click/hover a button ??
  • 选择一个按钮

标签: html css angular button angular-material


【解决方案1】:

您必须在mat-flat-button 的click 上设置一个变量,例如selectedTab,并使用ngClass 添加基于active 的active 类。

<div flexLayout="row">
    <button (click)="selectedTab = 1" [ngClass]="{'active': selectedTab === 1}" mat-flat-button>B2-L1</button>
    <button (click)="selectedTab = 2" [ngClass]="{'active': selectedTab === 2}" mat-flat-button>B2-L3</button>
    <button (click)="selectedTab = 3" [ngClass]="{'active': selectedTab === 3}" mat-flat-button>B2-L3</button>
    <button (click)="selectedTab = 4" [ngClass]="{'active': selectedTab === 4}" mat-flat-button>B2-L4</button>
</div>

active 类看起来像这样。

.mat-flat-button.active {
    background-color: white;
}

注意:我不确定这是否是您的代码中的拼写错误,但0 和px 之间不应有空格。如果这样使用,它将不适用。 !important 也不需要。相反,你可以试试这个。

.mat-flat-button {
    background-color: grey;
    border-radius: 0px;
}

【讨论】:

    【解决方案2】:

    按钮上有几个事件可以更改颜色。

    • :focus点击后会变色。
    • :active 会在点击时改变颜色。
    • :hover 将鼠标悬停在按钮上时会改变颜色。

    我想你在这里寻找:focus。

    .mat-flat-button:focus {
        background-color: white !important;
    }
    

    Here你可以找到演示。

    【讨论】:

    • 这只会部分起作用,如果用户点击外部,他仍然希望标签显示为活动状态。但由于您使用的是focus 事件,按钮将再次失去其活动状态。
    猜你喜欢
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多