【CSS进阶】使用CSS gradient制作绚丽渐变纹理背景效果

前言

一直对渐变背景这块比较感兴趣,但是因为每天加班实在太忙了,任务也比较多。所以就只能下班的时间研究渐变背景这方面的知识,一来满足了自己的好奇心,二来可以更加了解这方面的知识。跟更多不断学习的小伙伴们一起进步,一起汲取新的知识。不断成长,不断精进自己的知识。有想一起讨论技术,一起成长的伙伴们,也可以加微信一起交流。各微信群里面,有很多前端领域的大佬,在他们身上学到了很多,今后也努力向他们看齐。不断提升自己。加油。

CSS radial-gradient() 函数

定义与用法

radial-gradient() CSS函数创建了一个图像。
该图像是由从原点发出的两种或者多种颜色之间的逐步过渡组成。
形状可以是圆形(circle)或椭圆形(ellipse)。
与其它渐变相同,径向渐变是一个不固定尺寸的图像,即,它没有首选的大小,也没有首选的比例。具体大小将由它所应用的元素的大小决定。

例如:

1.双色圆形渐变

background: radial-gradient(#e66465, #9198e5);

2.closest-side
渐变的边缘形状与容器距离渐变中心点最近的一边相切(圆形)或者至少与距离渐变中心点最近的垂直和水平边相切(椭圆)。

background: radial-gradient(closest-side, #3f87a6, #ebf8e1, #f69d3c);


3.cicle圆形渐变

background: radial-gradient(circle at 100%, #333, #333 50%, #eee 75%, #333 75%);


4.ellipse椭圆形

radial gradient 的组成


【解释】:

  1. 径向渐变由其中心点、边缘形状轮廓、两个或多个色值结束点定义而成。
  2. 为了创建平滑的渐变,径向渐变函数绘制了一系列从中心点放射到边缘形状(甚至可能超出范围)的同心轮廓。
  3. 边缘形状可以是圆形(circle)或椭圆形(ellipse)。
  4. 色彩结束点位于虚拟渐变射线上,该渐变射线从中心点水平向右延伸。
  5. 基于百分比的色彩结束位置是相对于边缘形状和此渐变射线之间的交点(代表100%)。
  6. 每个形状都是一种单色,并由其相交的渐变射线上的颜色确定。
基本语法:
radial-gradient([[<shape>||<size>]?[at <position>,]?<color-stop>[,<color-stop>]+)

eg:radial-gradient(circle at center, red 0, blue, green 100%)

【注意】:gradient属于image类型,所以它可以用于任何适用于image的地方。不能用于 background-color 和其他属性比如color数据类型。

可配置参数

参数 解释
position 与background-position或者transform-origin类似。如没有设置,默认为中心点。
shape 渐变的形状。圆形(渐变的形状是一个半径不变的正圆)或椭圆形(轴对称椭圆)。默认值为椭圆
size 渐变的尺寸大小
color-stop 表示某个确定位置的固定色值,包含一个color值加上可选的位置值(相对虚拟渐变射线的percentage或者length长度值)。 百分比值0%,或者长度值0,表示渐变中心点;百分比值100%表示渐变射线与边缘形状相交的点。 其间的百分比值线性对应渐变射线上的点。
extent-keyword 关键字用于描述边缘轮廓的具体位置。

参考资料MND-linear-gradient():linear-gradient

径向渐变演示

  1. x轴:left: 0% center: 50% right: 100%
  2. y轴🔝 0% center: 50% bottom: 100%

Honeycam 2021-05-25 23-47-21.gif

在线展示地址

  1. 数值

数值:x轴数值表示在x轴上离0点(渐变框左上角)的偏移量;y轴数值表示在y轴上离0点的偏移量。

2.gif

在线展示地址

4. 使用百分比

其中x轴的百分比相对于渐变框的宽度,而y轴的百分比相对于渐变框的高度。渐变框的宽高由background-size决定。

3.gif

在线展示地址

  1. 单个值
    当只有一个值时,默认第二个值为center。

4.gif

在线展示地址

  1. shape形状
    定义渐变的形状是圆circle或椭圆ellipse。默认是椭圆。

Honeycam 2021-05-25 23-47-21.gif

在线展示地址

extent-keyword描述

常量 描述 用法
closest-side 渐变的边缘形状与容器距离渐变中心点最近的一边相切(圆形)或者至少与距离渐变中心点最近的垂直和水平边相切(椭圆)。 background-image: radial-gradient(closest-side at 60% 55%, red, yellow, black);
closest-corner 渐变的边缘形状与容器距离渐变中心点最近的一个角相交。 background-image: radial-gradient(closest-corner at 60% 55%, red, yellow, black);
farthest-side 与closest-side相反,边缘形状与容器距离渐变中心点最远的一边相切(或最远的垂直和水平边)。 background-image: radial-gradient(farthest-side at 60% 55%, red, yellow, black);
farthest-corner 渐变的边缘形状与容器距离渐变中心点最远的一个角相交。 background-image: radial-gradient(farthest-corner at 60% 55%, red, yellow, black);

7.gif

在线展示地址

线性渐变的色标

与线性渐变的色标相同的部分不再重复,这里只说明不同的部分。由于位置处于100%的色标有时并不会占满渐变区域,则浏览器会默认使用最后一个色标的颜色铺满渐变区域。

9.gif

在线展示地址

repeating-radial-gradient重复渐变

  1. CSS函数repeating-radial-gradient创建一个从原点辐射的重复渐变组成的image 。
  2. 它类似于radial-gradient 并且采用相同的参数,但是它会在所有方向上重复颜色,以覆盖其整个容器。
  3. 函数的结果是 gradient数据类型的对象, 是一种特殊的image类型。

示例

/* 一个从容器中心点开始的重复渐变,   从红色开始,渐变到蓝色,再渐变到绿色 */
repeating-radial-gradient(circle at center, red 0, blue, green 30px);

  1. 每次重复时,色标位置的偏移量都是基准渐变长度(最后一个色标和第一个之间的距离)的倍数。
  2. 最后色标的色值应该与第一个色标的色值保持一致;如果不一致的话,会导致非常突兀的渐变效果。
  3. 它没有原始尺寸或首选尺寸,也没有首选的比列。它将自适应于对应元素的尺寸。

【注】:其他参数使用跟radial-gradient()一致。可参考上面介绍。

径向渐变重复

  1. 重复渐变可以实现径向渐变的重复效果,使色标在椭圆方向上无限重复,实现一些特殊的效果。
  2. 只有当首尾两颜色位置不在0%或100%时,重复渐变才生效。
background-image: -webkit-repeating-radial-gradient(blue 20%,green 50%);
background-image: repeating-radial-gradient(blue 20%,green 50%);

11.gif

在线展示地址

linear-gradient()线性渐变

CSS linear-gradient() 函数用于创建一个表示两种或多种颜色线性渐变的图片。其结果属于gradient数据类型,是一种特别的image数据类型。

12.gif

在线展示地址

xuan [参考资料:深入理解CSS径向渐变radial-gradient:linear-gradient](https://www.cnblogs.com/xiaohuochai/p/5370446.html)

线形渐变的构成

  1. 渐变线上的颜色值是由不同的点来定义,包括起始点,终点,以及两者之间的可选的中间点(中间点可以有多个)。

  2. 起始点是渐变线上代表起始颜色值的点。起始点由渐变线和过容器顶点的垂直线之间的交叉点来定义。(垂直线跟渐变线在同一象限内)

  3. 终点也是由渐变线和从最近的顶点发出的垂直线之间的交叉点定义的。

  4. 起点附近的点具有跟起点相同的颜色值,终点附近的点具有跟终点相同的颜色值。

示例代码

linear-gradient(red, orange, yellow, green, blue);
linear-gradient(red 0%, orange 25%, yellow 50%, green 75%, blue 100%);
linear-gradient(red 10%, 30%, blue 90%);
linear-gradient(red 40%, yellow 30%, blue 65%);
linear-gradient(red 0%, orange 10%, orange 30%, yellow 50%, yellow 70%, green 90%, green 100%);
linear-gradient(red, orange 10% 30%, yellow 50% 70%, green 90%);
linear-gradient(red 0%, orange 10% 30%, yellow 50% 70%, green 90% 100%);

使用语法

where <side-or-corner> = [ left | right ] || [ top | bottom ]
  and <color-stop-list> = [ <linear-color-stop> [, <color-hint>? ]? ]#, <linear-color-stop>
  and <linear-color-stop> = <color> [ <color-stop-length> ]?
  and <color-stop-length> = [ <percentage> | <length> ]{
   1,2}
  and <color-hint> = [ <percentage> | <length> ]

参考资料MND-linear-gradient():linear-gradient

绚丽纹理背景

1.光晕效果

图片.png

background: 
radial-gradient(rgba(255,255,255,0) 0, rgba(255,255,255,.15) 30%, rgba(255,255,255,.3) 32%, rgba(255,255,255,0) 33%) 0 0,
radial-gradient(rgba(255,255,255,0) 0, rgba(255,255,255,.1) 11%, rgba(255,255,255,.3) 13%, rgba(255,255,255,0) 14%) 0 0,
radial-gradient(rgba(255,255,255,0) 0, rgba(255,255,255,.2) 17%, rgba(255,255,255,.43) 19%, rgba(255,255,255,0) 20%) 0 110px,
radial-gradient(rgba(255,255,255,0) 0, rgba(255,255,255,.2) 11%, rgba(255,255,255,.4) 13%, rgba(255,255,255,0) 14%) -130px -170px,
radial-gradient(rgba(255,255,255,0) 0, rgba(255,255,255,.2) 11%, rgba(255,255,255,.4) 13%, rgba(255,255,255,0) 14%) 130px 370px,
radial-gradient(rgba(255,255,255,0) 0, rgba(255,255,255,.1) 11%, rgba(255,255,255,.2) 13%, rgba(255,255,255,0) 14%) 0 0,
linear-gradient(45deg, #343702 0%, #184500 20%, #187546 30%, #006782 40%, #0b1284 50%, #760ea1 60%, #83096e 70%, #840b2a 80%, #b13e12 90%, #e27412 100%);
background-size: 470px 470px, 970px 970px, 410px 410px, 610px 610px, 530px 530px, 730px 730px, 100% 100%;
background-color: #840b2a;

2.星空效果

图片.png

background-color:black;
background-image:
radial-gradient(white, rgba(255,255,255,.2) 2px, transparent 40px),
radial-gradient(white, rgba(255,255,255,.15) 1px, transparent 30px),
radial-gradient(white, rgba(255,255,255,.1) 2px, transparent 40px),
radial-gradient(rgba(255,255,255,.4), rgba(255,255,255,.1) 2px, transparent 30px);
background-size: 550px 550px, 350px 350px, 250px 250px, 150px 150px; 
background-position: 0 0, 40px 60px, 130px 270px, 70px 100px;

3.爱心桌布效果

图片.png

background: 
radial-gradient(circle closest-side at 60% 43%, #b03 26%, rgba(187,0,51,0) 27%),
radial-gradient(circle closest-side at 40% 43%, #b03 26%, rgba(187,0,51,0) 27%),
radial-gradient(circle closest-side at 40% 22%, #d35 45%, rgba(221,51,85,0) 46%),
radial-gradient(circle closest-side at 60% 22%, #d35 45%, rgba(221,51,85,0) 46%),
radial-gradient(circle closest-side at 50% 35%, #d35 30%, rgba(221,51,85,0) 31%),

radial-gradient(circle closest-side at 60% 43%, #b03 26%, rgba(187,0,51,0) 27%) 50px 50px,
radial-gradient(circle closest-side at 40% 43%, #b03 26%, rgba(187,0,51,0) 27%) 50px 50px,
radial-gradient(circle closest-side at 40% 22%, #d35 45%, rgba(221,51,85,0) 46%) 50px 50px,
radial-gradient(circle closest-side at 60% 22%, #d35 45%, rgba(221,51,85,0) 46%) 50px 50px,
radial-gradient(circle closest-side at 50% 35%, #d35 30%, rgba(221,51,85,0) 31%) 50px 50px;
background-color:#b03;
background-size:100px 100px;

4.墙砖效果

图片.png

background-color: silver;
background-image: linear-gradient(335deg, #b00 23px, transparent 23px),
linear-gradient(155deg, #d00 23px, transparent 23px),
linear-gradient(335deg, #b00 23px, transparent 23px),
linear-gradient(155deg, #d00 23px, transparent 23px);
background-size: 58px 58px; 
background-position: 0px 2px, 4px 35px, 29px 31px, 34px 6px;

5.条纹桌布效果

图片.png

background-color: hsl(2, 57%, 40%);
background-image: repeating-linear-gradient(transparent, transparent 50px, rgba(0,0,0,.4) 50px, rgba(0,0,0,.4) 53px, 
transparent 53px, transparent 63px, rgba(0,0,0,.4) 63px, rgba(0,0,0,.4) 66px, transparent 66px, transparent 116px, 
rgba(0,0,0,.5) 116px, rgba(0,0,0,.5) 166px, rgba(255,255,255,.2) 166px, rgba(255,255,255,.2) 169px, 
rgba(0,0,0,.5) 169px, rgba(0,0,0,.5) 179px, rgba(255,255,255,.2) 179px, rgba(255,255,255,.2) 182px, 
rgba(0,0,0,.5) 182px, rgba(0,0,0,.5) 232px, transparent 232px),
repeating-linear-gradient(270deg, transparent, transparent 50px, rgba(0,0,0,.4) 50px, rgba(0,0,0,.4) 53px, 
transparent 53px, transparent 63px, rgba(0,0,0,.4) 63px, rgba(0,0,0,.4) 66px, transparent 66px, transparent 116px, 
rgba(0,0,0,.5) 116px, rgba(0,0,0,.5) 166px, rgba(255,255,255,.2) 166px, rgba(255,255,255,.2) 169px, 
rgba(0,0,0,.5) 169px, rgba(0,0,0,.5) 179px, rgba(255,255,255,.2) 179px, rgba(255,255,255,.2) 182px, 
rgba(0,0,0,.5) 182px, rgba(0,0,0,.5) 232px, transparent 232px),
repeating-linear-gradient(125deg, transparent, transparent 2px, rgba(0,0,0,.2) 2px, rgba(0,0,0,.2) 3px, 
transparent 3px, transparent 5px, rgba(0,0,0,.2) 5px);

6. 可爱圆桌效果

图片.png

background-color:white;
background-image:
radial-gradient(midnightblue 9px, transparent 10px),        
repeating-radial-gradient(midnightblue 0, midnightblue 4px, transparent 5px, transparent 20px, midnightblue 21px, midnightblue 25px, transparent 26px, transparent 50px);    
background-size: 30px 30px, 90px 90px; 
background-position: 0 0;

7.闪光背景

图片.png

background: repeating-conic-gradient(rgb(255, 255, 255), rgb(109, 241, 76), rgb(255, 255, 255) 0.8deg);

8.不等宽背景条纹

图片.png

  background: linear-gradient(#78C9DB 70%,#0acf00 0%);
  background-size: 100%  20px;

9.瓷砖条纹背景

图片.png

background:linear-gradient(45deg,#78C9DB 50%,#0acf00 50%);
background-size:30px 30px;

10.草地效果

图片.png

background:linear-gradient(-45deg,#0acf00 50%,#78C9DB 50%);
background-size:30px 100%;

11.斜条纹背景

图片.png

  background:linear-gradient(-45deg,#0acf00 25%,#78C9DB 0,#78C9DB 50%,#0acf00 0,#0acf00 75%,#78C9DB 0);
background-size: 30px 30px;

12.单色斜条纹背景(利用透明度及transparent)

图片.png

background:#fff repeating-linear-gradient(30deg,rgba(0,0,0,.5),rgba(0,0,0,.5)15px,transparent 0,transparent 30px);

13.格子衫纹理

图片.png

background:#fff;
background: linear-gradient(90deg,rgba(100,0,0,.5) 50%,transparent 0),linear-gradient(rgba(100,0,0,.5) 50%,transparent 0);
background-size: 30px 30px
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值