背景渐变为双色调纯色 - 一种颜色宽度(以 px 为单位)

Background gradient as two tone solid color - one color width in px

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

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

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

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

喜欢:

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

你可以试试这个:

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

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);
}
<div class="first">

</div>

<div class="second">

</div>

你可以简单地选择:

首先使用固定背景颜色然后只需将0放在第二种颜色中,它将填充其余部分div.

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

这很适合你。

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

希望这对您有所帮助。

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

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

你可以用这个方法制作一个Javascript可控的进度条。

let progressCounter = 0;

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

我正在使用 document.querySelector('.progress').style.setProperty('--gradient-break',progressCounter+"%") 设置进度百分比,css 负责其余部分。

希望这对您有所帮助。