如何在Angular Material中更改所选选项卡的下划线颜色?

20
我正在按照这里的教程将md-tabs放在md-toolbar中。但是,我的所选指示器标签与md-primary颜色相同,使其不可见。请参见下面的图像。

enter image description here

但是,当我将md-tabs的颜色改为md-accent时,它会显示指示器。

enter image description here

我可以帮您翻译成中文。这段代码的意思是:“我该如何更改所选指示器选项卡的颜色?”
<md-toolbar class="md-whiteframe-5dp">
    <div class="md-toolbar-tools">
        <h2>Title</h2>
    </div>

    <md-tabs md-selected="tabs.selectedIndex">
        <md-tab id="tab1" aria-controls="tab1-content">Tab #1</md-tab>
        <md-tab id="tab2" aria-controls="tab2-content">Tab #2</md-tab>
        <md-tab id="tab3" aria-controls="tab3-content">Tab #3</md-tab>
    </md-tabs>
</md-toolbar>

<md-content layout-padding flex>
    <ng-switch on="tabs.selectedIndex" class="tabpanel-container">
        <div role="tabpanel" id="tab1-content" aria-labelledby="tab1" ng-switch-when="0" md-swipe-left="tabs.next()" md-swipe-right="tabs.previous()">
            View for Item #1<br />
            data.selectedIndex = 0
        </div>

    <div role="tabpanel" id="tab2-content" aria-labelledby="tab2" ng-switch-when="1" md-swipe-left="tabs.next()" md-swipe-right="tabs.previous()">
        View for Item #2<br />
        data.selectedIndex = 1
    </div>

    <div role="tabpanel" id="tab3-content" aria-labelledby="tab3" ng-switch-when="2" md-swipe-left="tabs.next()" md-swipe-right="tabs.previous()">
        View for Item #3<br />
        data.selectedIndex = 2
    </div>
    </ng-switch>
</md-content>

顺便说一下,所有的颜色都是默认的。
7个回答

32

最简单的方法是通过CSS进行更改:

md-tabs.md-default-theme md-ink-bar, md-tabs md-ink-bar {
    color: red !important;
    background-color:red !important;
}

但你也可以在文档中查看有关主题的 §: https://material.angularjs.org/latest/Theming/01_introduction

有时CSS是嵌入并动态生成的样式标签,如果这段代码不起作用,请尝试使用!important强制更改颜色。


能否更改它的左右样式?我希望它的宽度要小得多。 - Muneem Habib
1
如果您使用默认主题(即未使用自定义主题),它可以正常工作。 - forkinspace

8
md-tabs md-ink-bar {
    color: green;
    background-color: green;
}

3

虽然来晚了,但可能对某些人有帮助。简单来说,将mat-tab-group的颜色属性设置为none即可。

<mat-tab-group mat-align-tabs="start" mat-align-tabs="center" color="none">

2

您需要定义一个自定义主题并将accent-color设置为您想要的md-ink-bar颜色。在这个例子中,它是白色:

var customAccent = {
    '50': '#b3b3b3',
    '100': '#bfbfbf',
    '200': '#cccccc',
    '300': '#d9d9d9',
    '400': '#e6e6e6',
    '500': '#f2f2f2',
    '600': '#ffffff',
    '700': '#ffffff',
    '800': '#ffffff',
    '900': '#ffffff',
    'A100': '#ffffff',
    'A200': '#fff',
    'A400': '#f2f2f2',
    'A700': '#ffffff'
};
$mdThemingProvider
.definePalette('whiteAccent', customAccent);

$mdThemingProvider.theme('whiteAccentTheme')
    .primaryPalette('deep-purple')
    .accentPalette('whiteAccent');

您可以在此网站上生成一个强调色板:https://angular-md-color.com/#/

在您的视图中,使用新的自定义主题来为您的md-tabs添加样式:

<div md-theme="whiteAccentTheme">
  <md-tabs class="md-primary">...</md-tabs>
</div>

2

CSS

.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar {
    background-color: #f44336;                     
}

问题是关于AngularJS Material,而不是Angular Material。 - Splaktar

1

我也曾经遇到这个问题,对于覆盖 CSS 的解决方案并不满意。所以有一种更加便捷和直接的解决方法:

只需设置您的调色板的默认 HUE:

$mdThemingProvider.theme('default')
            .primaryPalette('amber', { 'default': '600'})
            .accentPalette('indigo', { 'default': '400'});

选项卡的墨水条、FAB速拨等将使用您调色板中的此颜色。

0
经过很多浪费时间的阅读,发现这是我找到的解决方案。作为一个新手CSS,以及一个厌恶CSS的人,我想为那些同样是新手CSS和厌恶CSS的人发布我的解决方案。
HTML
<md-tab-group>
    <md-tab>
        <ng-template md-tab-label>
            <span class="mdTab">Tab Label</span>
        </ng-template>
    </md-tab>
</md-tab-group>

CSS

.mdTab{
  color: white;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接