CSS3 中 linear-gradient 的百分比含义

老牛浏览 655评论 0发表于

1. 前言

最近开发项目遇到一个需求,已经求得商品的毛利率,需要根据毛利率的波动特性,用颜色很直观的描述其范围。简单来说,和股票一样,涨高时用一种颜色,降低时用一种颜色。如果毛利率为负,需要用另一种不同的颜色来表示。要注意的是,某种情况下,可能叠加了多个状态,要用多种颜色来表示。很自然,选择用背景色来表示,也就是 CSS3 的 linear-gradient 函数。当同时处于多个状态时,设置多个背景色即可。

2. 简介

linear-gradient() 函数用于创建一个线性渐变的「图像」。

为了创建一个线性渐变,你需要设置一个起始点和一个方向(指定为一个角度)的渐变效果。你还要定义终止色。终止色就是你想让 Gecko 去平滑的过渡,并且你必须指定至少两种,当然也会可以指定更多的颜色去创建更复杂的渐变效果。

3. 百分比的含义

3.1 例一

css
#grad1 {
    width: 100px;
    height: 100px;
    background: linear-gradient(red, yellow);
}

从红色渐变到黄色:

2b9f9761-7614-40e6-a33c-30fe708aff6d

3.2 例二

接下来我们在后面添加百分比:

css
#grad1 {
    width: 100px;
    height: 100px;
    background: linear-gradient(red 20%, yellow 80%);
}

效果如下:

4b1b73ac-c462-497a-bcf3-2c147aea21dc

可以看到渐变的区域向中间靠拢了,最上面是红色,最底下是黄色,中间部分才开始渐变。红色占了整个高度的 20%,黄色占了整个高度的 20%,剩下的 60% 是渐变区域。很奇怪,我们并没有直接设置 60%,但出现了这个值。

默认的渐变方式为从上到下,当某个颜色设置了百分比后,便会从离起始位置指定百分比距离的位置开始填充实色。

3.3 例三

接着我们再看一个例子:

css
#grad1 {
    width: 100px;
    height: 100px;
    background: linear-gradient(red 0%, yellow 100%);
}
f4f64842-4dda-4b27-a099-a924a13792b1

和例一并没有区别。

所以,我们不设百分比的话,默认是根据颜色的数量来设置百分比的,起始的值是 0%,最后一个颜色的值是 100%。

3.4 例四

css
#grad1 {
    width: 100px;
    height: 100px;
    background: linear-gradient(red, black, yellow, green, blue);
}
94dfdc93-8ce3-4ed6-becd-9fd23345dc40

如果有更多的颜色,则平均划分,例如有 5 个,则有 4 个渐变区域,每种颜色的百分比依次为 0%,25%,50%,75%,100%,即(N - 1)* 100%。

简单来说,相邻两个百分比之间的差值就是渐变区域。

3.5 例五

所以线条背景色就好办了:

css
#grad1 {
    width: 100px;
    height: 100px;
    background: linear-gradient(red 50%, yellow 50%);
}

或者

css
#grad1 {
    width: 100px;
    height: 100px;
    background: linear-gradient(red 0%, red 50%, yellow 50%, yellow 100%);
}
7aff4c75-6329-4027-a0db-ad43b9bfca67

3.6 例六

多线条的:

css
#grad1 {
    width: 100px;
    height: 100px;
    background: linear-gradient(red 0%, red 25%, yellow 25%, yellow 50%, green 50%, green 75%, blue 75%, blue 100%);
}

效果如下:

bc98efcf-e681-4364-9e7d-9aab17153b9c

4. 结论

相邻两个百分比之间的差值就是渐变区域

点赞
收藏
暂无评论,快来发表评论吧~
私信
老牛@ilaoniu
老牛,俗称哞哞。单纯的九零后理工小青年。喜欢折腾,爱玩,爱音乐,爱游戏,爱电影,爱旅游...
最后活跃于