13

水平渐变 linear-gradient

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI0NjU3MDA4NQ%3D%3D&%3Bmid=2247484775&%3Bidx=1&%3Bsn=79fb89715b2b5e0ce4cbc37febea0e1e
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
BfaAVvY.png!mobile

过年期间,玩了玩 css,感觉很有意思。特别是在看 《CSS 揭秘》 这本书时,仿佛打开了新世界的大门。以前认为,渐变不就是那样吗,颜色逐渐变一下,还能玩出花来 ? 看到了书中用渐变实现条纹,让我很意外。书中关于渐变说的并不是很细致,于是我决定好好把水平渐变的使用整理整理,再写点其他的渐变效果,便有此文。

一、CSS 水平渐变介绍

1. 水平渐变 颜色

linear-gradient 中可以指定若干个颜色,如下从上到下由蓝到红渐变。

n6JZra6.png!mobile

1.colorful{
2  height100px;
3  width300px;
4  backgroundlinear-gradient(#228DFD,#F45749);
5}

2. 水平渐变 stop

除了指定颜色之外,每个颜色可以指定百分比,也就是水平渐变色的 stop 。如下,蓝色指定 70%,则渐变从 70% 的位置开始,也就是其余的 30% 的区域进行渐变。

Jzy6Zbr.png!mobile

1.colorful{
2  height100px;
3  width300px;
4  backgroundlinear-gradient(#228DFD 70%,#F45749);
5}

同样,红色也可以指定 stop ,比如下面指定 85% ,也就是渐变部位从 70%~85% 之间,由蓝变红。

6ru2Mb3.png!mobile

1.colorful{
2  height100px;
3  width300px;
4  backgroundlinear-gradient(#228DFD 70%,#F45749 85%);
5}

3.多种颜色渐变

同理,可以指定多种颜色,如下, 蓝、绿、红 的stop 分别指定为 20%、40%、80% 。这就说明在 0~20% 之间是蓝色; 20%~40%蓝到绿的渐变40%~80% 是   绿到红的渐变80%~100% 之间是红色。

zq2Ajaz.png!mobile

1.colorful{
2  height100px;
3  width300px;
4  backgroundlinear-gradient(#228DFD 20%,#00CF00 40%,#F45749 80%);
5}

4.水平渐变的旋转

linear-gradient 第一个参数可以传入角度值,用于将渐变旋转,如下是旋转 45° 的效果。

eQJRjye.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundlinear-gradient(45deg, #228DFD 20%, #00CF00 40%, #F45749 80%);
5}

为了更好地演示角度的作用,这里使用 CSS3 帧动画 对角度值进行帧变换。就可以得到下面的效果:

BreiYze.gif!mobile

5. 文字渐变背景色

通过 -webkit-background-clip:text 可以将背景剪裁为文字区域,再通过将文字颜色设为 透明 ,就可以得到渐变的文字效果。注意 background 要在 -webkit-background-clip 属性之前指定。

fm2aymN.png!mobile

1.colorful-text {
2  font-size50px;
3  color: transparent;
4  backgroundlinear-gradient(45deg, #228DFD 20%, #00CF00 40%, #F45749 80%);
5  -webkit-background-clip: text;
6}

二、基于水平渐变的色条

1.双色条

如果指定两个颜色的 stop 都是 50%,那就说明没有渐变的部分,两色等分区域。

r6RvUfr.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundlinear-gradient(#228DFD 50%, #00CF00 50%);
5}

当设置 background-size 后,就可以得到色条填充的效果。

bIjaAbu.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundlinear-gradient( #228DFD 50%, #00CF00 50%);
5  background-size100% 25px;
6}

2.多色条

如下,控制好颜色的 stop 值,可以让三色平均填充。

Vf6fYnU.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundlinear-gradient(#228DFD 33.33%, #00CF00 33.3%,#00CF00 66.66%, #F45749 0)
5}

这样就可以得到三色的均分条纹。

A7JzMnE.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundlinear-gradient(#228DFD 33.33%, #00CF00 33.3%,#00CF00 66.66%, #F45749 0);
5  background-size100% 25px;
6}

3.不等分条纹

只要设置好每个颜色的 stop 值,如左图,就可以让颜色按比例分配空间。通过设置 background-size 缩小单体的高度,就可以得到右侧的不等分条纹。

322Yna3.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundlinear-gradient(#228DFD 20%, #00CF00 20%,#00CF00 70%, #F45749 0);
5}

4.竖条纹

实现竖条纹非常简单,只需要将横条纹 旋转 90° 即可。

7ryiui2.png!mobile

1/*上图左侧效果*/
2.colorful {
3  height100px;
4  width300px;
5  backgroundlinear-gradient(90deg,#228DFD 20%, #00CF00 20%,#00CF00 70%, #F45749 0);
6}
7
8/*上图右侧效果*/
9.colorful {
10  height100px;
11  width300px;
12  background-size30px,100%;
13}

5.锯齿

如下,如果旋转角度设为 45° 会获得左侧的单体,然后 background-size 的宽度设为 5px 就可以得到一个上下锯齿的效果。

RnqymiY.png!mobile

1/*上图左侧效果*/
2.colorful {
3  height100px;
4  width300px;
5  backgroundlinear-gradient(45deg,#228DFD 20%, #000000 20%,#000000 70%, #F45749 0);
6}
7
8/*上图右侧效果*/
9.colorful-mutiy {
10  height100px;
11  width300px;
12  backgroundlinear-gradient(45deg,#228DFD 20%, #000000 20%,#000000 70%, #F45749 0);
13  background-size:  5px,100%;
14}

通过改变 background-size 的宽度,可以让 锯齿 变大。如下是单体宽度 10px 的效果。

auMbIzn.png!mobile

通过改变角度,改变 锯齿 的倾角,如下是 30deg ,单体宽度 5px 的效果。

ANBFRfr.png!mobile

但不要忘记,我们用的是渐变属性,如下尖角捎带模糊的效果,可以通过控制 stop 来实现。

JjMVJvV.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundlinear-gradient(30deg,#228DFD 15%, #000000 20%,#000000 80%, #F45749 85%);
5}

这样一来,将 锯齿+文字 就可以得到如下效果:

BfaAVvY.png!mobile

三、重复水平渐变: repeating-linear-gradient

1. 水平渐变颜色

linear-gradient 中可以指定若干个颜色,如下从左到右由黄到黑渐变。那它和 linear-gradient 有什么区别呢?

RzQj6b.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundrepeating-linear-gradient(
5      90deg,
6      yellow,
7      black
8  );
9}

如下,我将黄色的 stop 指定为 22.5% ,测试效果如下。在 22.5% ~100% 区域内黄黑渐变。在此之前仍被渐变填充,这和 linear-gradient 有所差异。

Rbi6J3A.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundrepeating-linear-gradient(
5      90deg,
6      yellow 22.5%,
7      black
8  );
9}

当把黄色的 stop 置为 50% , 前面部分依然被渐变填充,这样,就是等分的两块渐变。

a2yEFff.png!mobile

下面来看一个更一般的 stop,如下,黄色 stop 为 20% ,黑色为 50% 。图中框出的是渐变的单体, repeating-linear-gradient 是一个重复的水平渐变,就是用这个单体来填充整个背景。

FNBv2mm.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundrepeating-linear-gradient(
5      90deg,
6      yellow 20%,
7      black 45%
8  );
9}

另外除了指定百分比,还可以指定 px 值。如下,黄色 stop 为0,向后 20 px 为黑色,之间进行黄黑渐变。单体如红框所示。

BfYBZ3Z.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundrepeating-linear-gradient(
5      90deg,
6      yellow ,
7      black 20px
8  );
9}

2. 重复水平渐变实现条纹

到这里,通过 重复水平渐变 实现条纹的方式就呼之欲出了。单体如下:

zmABNnZ.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundrepeating-linear-gradient(
5      90deg,
6      yellow ,
7      yellow 10px,
8      black 10px,
9      black 20px
10  );
11}

3.斜条纹

通过指定角度旋转即可得到斜条纹。

B3qABrR.png!mobile

1.colorful {
2  height100px;
3  width300px;
4  backgroundrepeating-linear-gradient(
5      45deg,
6      yellow ,
7      yellow 20px,
8      black 20px,
9      black 40px
10  );
11}

同理,也可以为文字设置斜条纹背景。

z2EB3iR.png!mobile

1.colorful-text {
2  font-size60px;
3  color: transparent;
4  backgroundrepeating-linear-gradient(
5      45deg,
6      green ,
7      green 20px,
8      black 20px,
9      black 40px
10  );
11  -webkit-background-clip: text;
12}

4.边框中使用渐变

通过上对 repeating-linear-gradient 的认识,实现下面的边框就非常简单了。可以通过 border-image 属性设置边框样式,是几个样式的合集,这里就不展开了。 border-image-source 用来指定资源,这里的资源为渐变色。

263uyai.png!mobile

1.colorful {
2  width270px;
3  height150px;
4  border16px solid transparent;
5
6  border-image-slice16 16 16 16;
7  border-image-sourcerepeating-linear-gradient(
8      -45deg,
9
10      #E25B79 0,
11      #E25B79 15px,
12      transparent 0px,
13      transparent 30px,
14
15      #4457A0 0,
16      #4457A0 45px,
17      transparent 0,
18      transparent 60px
19  );
20}

到这里,水平渐变的使用基本上讲完了。谢谢观看 ~


Recommend

  • 45
    • www.cocoachina.com 5 years ago
    • Cache

    iOS渐变按钮Gradient Button的实现

    GradientCategory 使用category实现gradient 简介 本例主要采用了类别来实现了给按钮设置渐变色的功能 当然,里边也有一些别的对比实现方法. 各位看官如有发现什么bug,请批评指正!

  • 21
    • www.zhangxinxu.com 4 years ago
    • Cache

    CSS conic-gradient()锥形渐变简介

    byzhangxinxu from https://www.zhangxinxu.com/wordpress/?p=9384 本文欢迎分享与聚合,全文转载就不必了,尊重版权,圈子就这么大,若急用可以联系授权。...

  • 5
    • www.ruphi.cn 3 years ago
    • Cache

    深入理解 linear-gradient()

    深入理解 linear-gradient() 相信大家都用过linear-gradient这个CSS3带来的特性,用来实现线性渐变效果。我们都知道它的语法是: linear-gradient([<angle> | to <side-or-corn...

  • 5
    • xieyufei.com 3 years ago
    • Cache

    深入理解linear-gradient

      linear-gradient是CSS3的一个新特性;在以前实现渐变、阴影等一些酷炫效果都是通过图片来实现的,但是通过linear-gradient我们可以实现同样丰富多样的效果。 定义及语法  linear-gradient()称为线性过渡函数,用于创建一个...

  • 8

    by zhangxinxu from http://www.zhangxinxu.com 本文地址: http://www.zhangxinxu.com/wordpress/?p=743

  • 6

    by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=6521 本文可全文转载,但需得到原作者书面许可,同时保留原作者和出处,摘要引流则...

  • 5

    一直对渐变背景这块比较感兴趣,但是因为每天加班实在太忙了,任务也比较多。所以就只能下班的时间研究渐变背景这方面的知识,一来满足了自己的好奇心,二来可以更加了解这方面的知识。跟更多不断学习的小伙伴们一起进步,一起汲取新的知识。不断成长,不断精进...

  • 8

    1.什么是conic-gradient(圆锥渐变)conic-gradient是圆锥渐变,以一个点为中心起始点,沿着圆周变化。语法:conic-gradient( from 起始角度 at 中心点位置, 渐变断点 )兼容性:一个简单的例子:看清他的渐变方向,起...

  • 7

    Make Beautiful Gradients21915So here's a CSS linear gradient, going from pure yellow to pure blue:Notice that it gets kinda washed out and muddy in the middle there?This is wh...

  • 3

    1. 水平条纹背景 当给背景设置渐变效果时,默认的渐变方向是垂直由上到下的,效果如下: { background: linear-gradient(#aaa, #ddd);

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK