MDL:改变不确定进度条的颜色?

MDL: Changing Color of Indeterminate Progress Bar?

如何在 Material Design Lite 中更改不确定进度条的颜色?

我希望栏使用我在调用时选择的强调色(粉红色)

    <link rel="stylesheet" href="https://code.getmdl.io/1.1.3/material.indigo-pink.min.css">

这是当前进度条的行:

<div class="mdl-progress mdl-js-progress mdl-progress__indeterminate" style="width: 100%"></div>

我尝试将 mdl-color--pink-500 和 mdl-color-text--pink-500 添加到 class,但没有成功。

运行成同样的问题。显然 mdl-progress 使用主题颜色进行显示并且没有直接的方法来更改它。我最终创建了一个额外的 class mdl-progress-red 附加到 mdl-progress 只是为了我可以设置子元素的颜色。下面是红色 rgb(255,0,0) 的 CSS。如果您想更改颜色,只需将下面样式中的 rgb(255,0,0) 替换为您想要的颜色即可。

.mdl-progress-red > .progressbar {
    background-color: rgb(255,0,0);
}

.mdl-progress-red > .bufferbar {
    background-image: linear-gradient(to right, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), linear-gradient(to right, rgb(255,0,0), rgb(255,0,0));
}

.mdl-progress-red > .auxbar {
    background-image: linear-gradient(to right, rgba(255,255,255, 0.9), rgba(255,255,255, 0.9)), linear-gradient(to right, rgb(255,0,0), rgb(255,0,0));
}

然后,要将颜色应用于进度条 - 您只需指定新的 class 名称,如下所示:

<div class="mdl-progress mdl-js-progress mdl-progress__indeterminate mdl-progress-red" style="width: 100%"></div>

我在尝试 Material 设计时也遇到过同样的问题。马吕斯的说法是正确的:

Ran into the same problem. Apparently mdl-progress uses the theme color for display & there's no straight-forward way to change that.

我已经在 codepen 上尝试过他的回答,但它对我不起作用,但我通过将 !important 添加到 CSS 来设法让它工作。见下文,基于 Material 进度条示例,第二个自定义彩色条基于 Marius 的解决方案:

<html>
  <head>
    <!-- Material Design Lite -->
    <script src="https://code.getmdl.io/1.3.0/material.min.js"></script>
    <link rel="stylesheet" href="https://code.getmdl.io/1.3.0/material.indigo-pink.min.css">
    <!-- Material Design icon font -->
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
  </head>
  <body>
    <!-- Simple MDL Progress Bar -->
    <div id="p1" class="mdl-progress mdl-js-progress"></div>
    <br></br>
    <div id="p2" class="mdl-progress mdl-js-progress mdl-progress-red"</div>
  </body>
</html>

CSS

body {
  padding: 20px;
  background: #fafafa;
  position: relative;
}

.mdl-progress-red > .bufferbar {
    background-image: linear-gradient(to right, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), linear-gradient(to right, rgb(255,0,0), rgb(255,0,0))  !important;
}

.mdl-progress-red > .auxbar {
    background-image: linear-gradient(to right, rgba(255,255,255, 0.9), rgba(255,255,255, 0.9)), linear-gradient(to right, rgb(255,0,0), rgb(255,0,0))  !important;
}

.mdl-progress-red > .progressbar {
    background-color: rgb(255,0,0) !important;
}

JS

document.querySelector('#p1').addEventListener('mdl-componentupgraded', function() {
    this.MaterialProgress.setProgress(44);
  });

document.querySelector('#p2').addEventListener('mdl-componentupgraded', function() {
    this.MaterialProgress.setProgress(44);
  });

此代码创建了四个进度条,分别为红色、橙色、黄色和绿色

.mdl-progress-red > .bufferbar {
    background-image: linear-gradient(to right, rgba(255,255,255, 0.7), rgba(255,255,255, 0.7)), linear-gradient(to right, rgb(255,0,0), rgb(255,0,0))  !important;
}

.mdl-progress-red > .auxbar {
    background-image: linear-gradient(to right, rgba(255,255,255, 0.9), rgba(255,255,255, 0.9)), linear-gradient(to right, rgb(255,0,0), rgb(255,0,0))  !important;
}

.mdl-progress-red > .progressbar {
    background-color: rgb(255,0,0) !important;
}

.mdl-progress-orange > .bufferbar {
    background-image: linear-gradient(to right, rgba(255,227,199, 0.7), rgba(255,227,199, 0.7)), linear-gradient(to right, rgb(255,145,0), rgb(255,145,0))  !important;
}

.mdl-progress-orange > .auxbar {
    background-image: linear-gradient(to right, rgba(255,227,199, 0.9), rgba(255,227,199, 0.9)), linear-gradient(to right, rgb(255,145,0), rgb(255,145,0))  !important;
}

.mdl-progress-orange > .progressbar {
    background-color: rgb(255,145,0) !important;
}

.mdl-progress-yellow > .bufferbar {
    background-image: linear-gradient(to right, rgba(255,255,206, 0.7), rgba(255,255,206, 0.7)), linear-gradient(to right, rgb(240,220,0), rgb(240,220,0))  !important;
}

.mdl-progress-yellow > .auxbar {
    background-image: linear-gradient(to right, rgba(255,255,206, 0.9), rgba(255,255,206, 0.9)), linear-gradient(to right, rgb(240,220,0), rgb(240,220,0))  !important;
}

.mdl-progress-yellow > .progressbar {
    background-color: rgb(240,220,0) !important;
}

.mdl-progress-green > .bufferbar {
    background-image: linear-gradient(to right, rgba(214,255,214, 0.7), rgba(214,255,214, 0.7)), linear-gradient(to right, rgb(0,153,0), rgb(0,153,0))  !important;
}

.mdl-progress-green > .auxbar {
    background-image: linear-gradient(to right, rgba(214,255,214, 0.9), rgba(214,255,214, 0.9)), linear-gradient(to right, rgb(0,153,0), rgb(0,153,0))  !important;
}

.mdl-progress-green > .progressbar {
    background-color: rgb(0,153,0) !important;
}

例子四进度条

<div id="p1" class="mdl-progress mdl-js-progress mdl-progress-red"></div>
<br/><br/>
<div id="p2" class="mdl-progress mdl-js-progress mdl-progress-orange"></div>
<br/><br/>
<div id="p3" class="mdl-progress mdl-js-progress mdl-progress-yellow"></div>
<br/><br/>
<div id="p4" class="mdl-progress mdl-js-progress mdl-progress-green"></div>
<script>
document.querySelector('#p1').addEventListener('mdl-componentupgraded', function() {
    this.MaterialProgress.setProgress(44);
  });

document.querySelector('#p2').addEventListener('mdl-componentupgraded', function() {
    this.MaterialProgress.setProgress(44);
  });
document.querySelector('#p3').addEventListener('mdl-componentupgraded', function() {
    this.MaterialProgress.setProgress(44);
  });
document.querySelector('#p4').addEventListener('mdl-componentupgraded', function() {
    this.MaterialProgress.setProgress(44);
  });

</script>