【问题标题】:Background gradient as two tone solid color - one color width in px背景渐变为两种色调的纯色 - 一种颜色宽度(以 px 为单位)
【发布时间】:2017-11-24 09:33:39
【问题描述】:

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);
}

【问题讨论】:

    标签: css background-color linear-gradients


    【解决方案1】:

    您可以简单地使用:

    首先使用固定的背景颜色,然后只需将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>

    希望这会有所帮助。

    【讨论】:

    • 太棒了,看起来更好。谢谢。
    【解决方案2】:

    你可以试试这个:

    使用第一种颜色所需的值(此处为 46 像素)并简单地为第二种颜色使用较小的值(0 到 45 像素之间)。然后根据需要改变渐变的方向。

    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>

    【讨论】:

    • 那么,如果我想让红色位在右侧呢?
    【解决方案3】:

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

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

    您可以使用此方法制作 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));
    }
    &lt;div class="progress"&gt;&lt;/div&gt;

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

    希望这有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-14
      • 2015-07-05
      • 2018-03-07
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      相关资源
      最近更新 更多