【问题标题】:MDC-Web CSS theme colors not defined未定义 MDC-Web CSS 主题颜色
【发布时间】:2019-10-25 21:58:35
【问题描述】:

在本地运行我的前端时,我检查按钮元素并且颜色 --mdc-theme-primary 没有定义,即使它是。

检查元素:

Index.html

<button class="mdc-tab mdc-tab--active" aria-selected="true" tabindex="0">
    <span class="mdc-tab__content">
        <span class="mdc-tab__text-label">Home</span>
    </span>
</button>

Firefox 检查元素结果,--mdc-theme-primary 未使用后备值定义:

.mdc-tab--active .mdc-tab__text-label {
    color: #e3f2fd;//this line is disabled in console is dashed
    color: var(--mdc-theme-primary, #e3f2fd);
}

使用Theming Guide!我的文件设置如下:

_themecolor.scss

$mdc-theme-primary: #e3f2fd;
$mdc-theme-on-primary: #442C2E;
$mdc-theme-secondary: #0d48a1;
$mdc-theme-on-secondary: rgb(235, 15, 33);
$mdc-theme-surface: #000000;
$mdc-theme-on-surface: #442C2E;
$mdc-theme-background: #000000;
$mdc-theme-on-background: #442C2E;

_variables.scss(用于完成,不需要)

.topAppBar-margin-fix {
    top: 0;
    left: 0;
}

app.scss

@import "./_themecolor";
@import "./_variables";


@import "@material/top-app-bar/mdc-top-app-bar";

@import "@material/typography/mdc-typography";

@import "@material/button/mdc-button";

@import "@material/tab-bar/mdc-tab-bar";
@import "@material/tab-bar/mixins";
@import "@material/tab-scroller/mdc-tab-scroller";
@import "@material/tab-indicator/mdc-tab-indicator";
@import "@material/tab-indicator/mixins";
@import "@material/tab/mdc-tab";
@import "@material/tab/mixins";

.mdc-tab__text-label{
  //@include mdc-tab-active-text-label-color(on-primary);
  //--mdc-theme-primary: red;
  //--mdc-theme-primary: $mdc-theme-on-secondary;
}

body {
    color: blue;

  }

app.js

import {MDCTabBar} from '@material/tab-bar';

const tabBar = new MDCTabBar(document.querySelector('.mdc-tab-bar'));

import {MDCTabScroller} from '@material/tab-scroller';

const tabScroller = new MDCTabScroller(document.querySelector('.mdc-tab-scroller'));

import {MDCTab} from '@material/tab';

const tab = new MDCTab(document.querySelector('.mdc-tab'));

在滚动条内为该站点提供服务,按钮中 Home 标签的颜色是备用颜色,而不是主颜色或我使用 mixin 设置的任何颜色。 我试过了:

案例a)

.mdc-tab__text-label{
       @include mdc-tab-active-text-label-color(on-primary);
}

案例 b)

.mdc-tab__text-label{
       --mdc-theme-primary: red;
}

案例 c)

.mdc-tab__text-label{
       --mdc-theme-primary: $mdc-theme-on-secondary;
}

案例 a) 也尝试使用简单的颜色作为“红色”,但使用的颜色仍然是备用颜色。

case b) 按预期工作,呈红色。

case c) 标签颜色是黑色而不是红色,正如 themecolor.scss

中定义的 $mdc-theme-on-secondary

还尝试使用 a) b) 和 c)

.mdc-tab--active .mdc-tab__text-label{
       //repeating each case, only working the one with "red" value.
}

我认为我做的错误:

1- 我在设置标签颜色时使用了错误的 mixin。

2- 我在 themecolor.scc 中使用定义的颜色变量错误,因为我不知道 css。

3- 我的包含有问题。

4- 我的 SASS 变量没有被编译吗?

问题为什么没有定义--mdc-theme-primary?为什么我不能指出 themecolor.scss 中定义的颜色?

感谢任何帮助。

【问题讨论】:

    标签: css web sass material-design mdc


    【解决方案1】:

    我通过做一些未在指南中解释的事情来解决这个问题。当你想使用主题时,你必须将主题组件导入到你的项目中,如下:

    app.scss

    @import "./_themecolor";
    @import "./_variables";
    
    //----add these lines after custom imports-----
    @import "@material/theme/mdc-theme";
    @import "@material/theme/mixins";
    //---------------------------------------------
    
    @import "@material/top-app-bar/mdc-top-app-bar";
    

    不需要其他任何东西,所有颜色都会被定义。

    谢谢你。我希望这对新手有所帮助。

    【讨论】:

    • 对我来说有效的是 [ 如第 3 步中的文档中所述 material.io/develop/web/docs/theming]@use "@material/theme" with ( $primary: #9c27b0, $secondary: #76ff03, $background: #fff, );
    猜你喜欢
    • 2018-07-04
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 2017-11-29
    • 2018-06-19
    相关资源
    最近更新 更多