背景渐变为双色调纯色 - px中的一种颜色宽度

时间:2017-11-24 09:33:40

标签: css background-color linear-gradients

div {
  height: 50px;
  width: 100%;
  background-image: linear-gradient(to right, white 50%, red 46px);
}

body {
  padding: 20px;
}
<div></div>

我正试图在div中使用线性渐变作为双色调纯色背景。

div可以是任何宽度,我希望其中一种颜色在px中具有指定的宽度 - 另一种颜色可以填充总宽度的剩余部分。这有可能吗?

像:

div {
  background-image: linear-gradient(to right, white auto, red 46px);
}

3 个答案:

答案 0 :(得分:3)

您可以简单地使用:

首先使用固定背景颜色,然后将0放入第二种颜色,它将填充div的其余部分。

background: linear-gradient(to right, lightgreen 19px, darkgreen 0);

这对你很好。

&#13;
&#13;
div {
  display: inline-block;
  background: linear-gradient(to right, lightgreen 19px, darkgreen 0);
  width: 50%;
  height: 100px;
  color: white;
  text-align: center;
}
&#13;
<div>
  Test
</div>
&#13;
&#13;
&#13;

希望这有用。

答案 1 :(得分:2)

你可以试试这个:

使用第一种颜色所需的值(此处为46px),并使用较小的值作为第二种颜色(介于0和45px之间)。然后根据需要更改渐变的方向。

&#13;
&#13;
div.first {
  height:100px;
  background-image: linear-gradient(to right, red 46px, blue 40px);
}

div.second {
  margin-top:10px;
  height:100px;
  background-image: linear-gradient(to left, red 46px, blue 0px);
}
&#13;
<div class="first">

</div>

<div class="second">

</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

我认为这是使用css variables的好时机,我们可以将变量设置为断点,并且只需在移动渐变时更新该变量。

&#13;
&#13;
div {
  --gradient-break: calc(100% - 46px);
  height: 50px;
  background-image: linear-gradient(to right, darkgreen var(--gradient-break), tomato var(--gradient-break));
}
&#13;
<div></div>
&#13;
&#13;
&#13;

您可以使用此方法制作Javascript控制的进度条。

&#13;
&#13;
let progressCounter = 0;

setInterval(function() {
  if (progressCounter >= 100) {
    progressCounter = 0;
  } else {
    progressCounter++;
  }
  document.querySelector('.progress').style.setProperty('--gradient-break', progressCounter + "%")
}, 50)
&#13;
div.progress {
  --gradient-break: 0%;
  height: 50px;
  background-image: linear-gradient(to right, darkgreen var(--gradient-break), tomato var(--gradient-break));
}
&#13;
<div class="progress"></div>
&#13;
&#13;
&#13;

我使用document.querySelector('.progress').style.setProperty('--gradient-break',progressCounter+"%")设置进​​度百分比,而css正在处理其余的事情。

希望这有用。