【问题标题】: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));
}
<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 处理。
希望这有帮助。