如何在Angular-Material中设置文本颜色?

问题描述 投票:37回答:9

我想在一个句子中设置一个单词,使其具有md-primary颜色,另一个单词设置为具有强调颜色。我假设这样的事情:

<div>
    Hello <span class="md-primary">friend</span>. 
    How are <span class="md-accent">you</span>?
</div>

但这些类仅适用于某些指定的组件。

这样做的方法是什么?

angularjs-material
9个回答
59
投票

我只能使用Angular Material 1.1.0来做到这一点。

您使用md-colors指令类似于ng-class的方式:

<span md-colors="{color:'primary'}">...</span>

上面的代码将为主要颜色的文本着色。传递给md-colors的对象使用键作为css属性(即“颜色”,“背景”等),并将值作为主题和/或调色板和/或要使用的色调。

Source Docs


14
投票

Angular Material的文档明确枚举了组件列表,您可以使用md-theme属性区分它们:

MD-按钮 MD-复选框 MD-进展圆形 MD-进展线性 MD-单选按钮 MD-滑块 MD-开关 MD-标签 MD-文本浮动 MD-工具栏

来自Angular Material documentation,在Theming / Declarative Syntax下。

所以我认为简短的回答是:你不能这样做。


6
投票

编辑2015/07/23

TitForTat的评论有更好的解决方案https://github.com/angular/material/issues/1269#issuecomment-121303016


我创建了一个模块:

(function () {
        "use strict";
        angular
            .module('custiom.material', ['material.core'])
            .directive('cMdThemeFg', ["$mdTheming", function ($mdTheming) {
                return {
                    restrict: 'A',
                    link: postLink
                };
                function postLink(scope, element, attr) {
                    $mdTheming(element);
                    element.addClass('c-md-fg');
                }

            }])
            .directive('cMdThemeBg', ["$mdTheming", function ($mdTheming) {
                return {
                    restrict: 'A',
                    link: postLink
                };
                function postLink(scope, element, attr) {
                    $mdTheming(element);
                    element.addClass('c-md-bg');
                }
            }]);
    })();

然后追加

.c-md-fg.md-THEME_NAME-theme.md-primary {    color: '{{primary-color}}'; }
.c-md-fg.md-THEME_NAME-theme.md-accent {    color: '{{accent-color}}'; } 
.c-md-fg.md-THEME_NAME-theme.md-warn {    color: '{{warn-color}}'; } 
.c-md-bg.md-THEME_NAME-theme.md-primary {    background-color: '{{primary-color}}'; } 
.c-md-bg.md-THEME_NAME-theme.md-accent {    background-color: '{{accent-color}}'; } 
.c-md-bg.md-THEME_NAME-theme.md-warn {    background-color: '{{warn-color}}'; }

到13783行的angular-material.js

angular.module("material.core").constant("......  HERE")

然后,我可以简单地将c-md-theme-fg和/或c-md-theme-bg应用于元素以应用主题颜色。像这样:

<div c-md-theme-bg class="md-primary md-hue-3">dasdasdasd</div>
<span c-md-theme-bg class="md-primary">test</span>

有用。

ps:抱歉英语,来自台湾:)


3
投票

我认为唯一的方法是创建自己的自定义调色板,如文档中所示:https://material.angularjs.org/latest/#/Theming/03_configuring_a_theme在定义自定义调色板的段落下。在那里你可以将'contrastDefaultColor'定义为浅或暗。如果我是对的,那应该这样做。

但是,我想使用标准调色板并将文本颜色覆盖为光,而不是定义一个全新的调色板。

您也可以(我建议这样做)使用'extendPalette'扩展现有的调色板。这样您就不必定义所有色调,而只需相应地设置'contrastDefaultColor'。

*编辑:刚试过一个解决方案

将此添加到您的配置功能(在上面提供的关于配置主题的链接上查找角度代码示例)

var podsharkOrange;

podsharkOrange = $mdThemingProvider.extendPalette('orange', {
  '600': '#689F38',
  'contrastDefaultColor': 'light'
});

$mdThemingProvider.definePalette('podsharkOrange', podsharkOrange);

$mdThemingProvider.theme('default').primaryPalette('podsharkOrange', {
  'default': '600'
});

我只是将600 HUE设置为绿色以验证主题更改是否有效,因此您可以忽略extendPalette中的该行。

所以这只是将颜色改为浅色,而不是特定的颜色。所以它没有回答你的问题,但可能仍然派上用场。


1
投票

最新的比特为这个问题带来了好消息......此功能已添加到1.1.0-rc3(2016-04-13)版本中。它还不稳定,但我对它的第一次测试是令人满意的。

现在,您可以将mdColors指令和$ mdColors服务与主题结合使用,以实现您所需的功能。

请看看:

https://github.com/angular/material/blob/master/CHANGELOG.md#110-rc3-2016-04-13

查看公告,并在文档中查找mdColor指令和$ mdColor服务以获取一些示例。


0
投票

在github中有一个问题就是讨论了这个问题,如上所述TitForTat在该问题上的评论几乎有完美的解决方案,但它不适用于服装调色板,我在那里添加一个固定解决方案的评论,你可以看看: https://github.com/angular/material/issues/1269#issuecomment-124859026


0
投票

自从version 1.0.0-rc1https://github.com/angular/material/blob/master/CHANGELOG.md#110-rc1-2016-03-09以来,Anchor element()正在对Angular Material当前主题设置做出反应。


0
投票

这个答案已经过时请检查@factalspawn的答案

使用'纯'角度材料,你不能。但你可以试试这个:https://gist.github.com/senthilprabhut/dd2147ebabc89bf223e7


-5
投票

对我来说,我假设所有以md开头的东西 - 你只能将主题颜色应用于它们。

在文档中,有一些组件没有记录,您可以使用主题颜色。例:

<md-subheader class="md-warn"> my subheader </md-subheader>
<md-icon class="md-accent"> </md-icon>
© www.soinside.com 2019 - 2024. All rights reserved.