1.径向渐变

radial-gradient() 函数用于创建一个径向渐变的“图像”,其一般调用格式为:

background-image: radial-gradient(shape size at position, start-color, ..., last-color);

其中,参数shape定义渐变的形状,默认值为ellipse,指定椭圆形的径向渐变,值circle指定圆形的径向渐变。

参数size 定义渐变的大小,可能值有:

farthest-corner(默认):指定径向渐变的半径长度为从圆心到离圆心最远的角;

closest-side:指定径向渐变的半径长度为从圆心到离圆心最近的边;

closest-corner:指定径向渐变的半径长度为从圆心到离圆心最近的角;

farthest-side:指定径向渐变的半径长度为从圆心到离圆心最远的边;

参数position  定义渐变的位置。可能值有:

center(默认):设置中间为径向渐变圆心的纵坐标值。

top:设置顶部为径向渐变圆心的纵坐标值。

bottom:设置底部为径向渐变圆心的纵坐标值。

参数start-color,…,last-color用于指定渐变的起止颜色,可以使用长度值或百分比来指定起止色位置,但不允许负值。

repeating-radial-gradient() 函数用于创建重复的径向渐变“图像”,其一般调用格式为:

background-image: repeating-radial-gradient(shape size at position,start-color, ..., last-color);

设在页面中有,若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid;

background-image:radial-gradient(red , yellow);

}

可在页面中显示如图1所示的图案。图1中径向渐变从中心点开始以椭圆的形式向外渐变,颜色从红色开始,渐变转为黄色。

Android progressbar 圆环渐变色_ci

图1  红色以椭圆形状渐变为黄色

若修改.shape样式中background-image属性定义为:

background-image:radial-gradient(circle, red , yellow);

则在页面中显示如图2所示的图案。图2中径向渐变是以圆形的方式进行,颜色同样从红色开始,渐变转为黄色。

Android progressbar 圆环渐变色_背景图_02

图2  圆形径向渐变

若修改.shape样式中background-image属性定义为:

background-image:radial-gradient(closest-side , red , yellow);

则在页面中显示如图3所示的图案。此时由于指定径向渐变的半径长度为从圆心到离圆心最近的边(上下两条边),因此图3对比图1,黄色面积明显增大。读者可以试试将closest-side 依次修改为farthest-corner(默认)、closest-corner和farthest-side后,页面显示的图形与图3的差别。

Android progressbar 圆环渐变色_背景图_03

图3  渐变大小为closest-side的径向渐变

若修改.shape样式中background-image属性定义为:

background-image:radial-gradient(closest-side at 60% 55%, red , yellow);

则在页面中显示如图4所示的图案。由于设置的渐变中心位置往右下偏了,因此图4中的椭圆形状向右下偏。

Android progressbar 圆环渐变色_ide_04

图4  渐变中心位置at 60% 55%

径向渐变可以指定多个颜色,例如若修改.shape样式中background-image属性定义为:

background-image:radial-gradient(red,orange,yellow,green,indigo,blue,violet);

则在页面中显示如图5所示的图案。

Android progressbar 圆环渐变色_背景图_05

图5  七彩径向渐变

径向渐变中指定的颜色可以使用透明度,例如若修改.shape样式中background-image属性定义为:

background-image:radial-gradient( rgba(255,0,0,0), rgba(255,0,0,1));

则在页面中显示如图4所示的图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_06

图6  使用了透明度的红色径向渐变

径向渐变中指定的颜色还可以定义停止位置,例如若修改.shape样式中background-image属性定义为:

background-image:radial-gradient(red 5%, green 15%, blue 60%);

则在页面中显示如图7所示的图案。

Android progressbar 圆环渐变色_ci_07

图7  颜色结点不均匀分布

若修改.shape样式中background-image属性定义为:

background-image:radial-gradient(red 50%, yellow 50%);

则均在页面中显示如图8所示的图案。此时,红黄两种颜色界限清楚,取消了渐变效果。

Android progressbar 圆环渐变色_css 渐变 椭圆_08

图8  黄底红圆

若修改.shape样式中background-image属性定义为:

background-image:radial-gradient(red 33%, yellow 33%, yellow 66%,blue 66%);

则在页面中显示如图9所示的图案。

Android progressbar 圆环渐变色_ci_09

图9  蓝底中的红黄椭圆

若修改.shape样式中background-image属性定义为:

background-image:radial-gradient(red 33%, yellow 66%,blue 66%);

则在页面中显示如图10所示的图案。注意图10与图9的差别,图10中间部分是红色向黄色的径向渐变。

Android progressbar 圆环渐变色_ci_10

图10  红黄间径向渐变

若修改.shape样式中background-image属性定义为:

background-image: repeating-radial-gradient(red, yellow 10%, blue 15%);

则在页面中显示如图11所示的图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_11

图11  重复的径向渐变

若修改.shape样式中background-image属性定义为:

background-image: repeating-radial-gradient(circle, red 0, red 10px,

yellow 10px, yellow 20px, blue 20px, blue 30px) ;

则在页面中显示如图12所示的图案。

Android progressbar 圆环渐变色_ide_12

图12 红黄蓝三色圆环

2.利用径向渐变绘制图形

利用径向渐变可以绘制出图形,下面给出一些示例。

(1)同心圆。

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 300px;

height: 300px;

border: 1px solid;

border-radius: 50%;

background-image: repeating-radial-gradient(red 0px, red 10px, #fff 10px, #fff 20px);

}

可在页面中显示如图13所示的红色同心圆图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_13

图13  红色同心圆

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 200px;

height: 200px;

border-radius: 50%;

border: 1px solid;

background-image: radial-gradient(60px at center center ,#fff 50% ,#000 50%);

}

可在页面中显示如图14所示的黑白同心圆图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_14

图14  黑白同心圆

若修改.shape样式中background-image属性定义为:

background-image: radial-gradient(60px at center center  ,#000 50%,#fff 50%);

可在页面中显示如图15所示的白黑同心圆图案。

Android progressbar 圆环渐变色_ci_15

图15  白黑同心圆

若定义.shape的样式规则为:

.shape

{

margin:0 auto;

width: 300px;

height: 300px;

border-radius: 50%;

background: repeating-radial-gradient(#f00, #f00 4px, #ff0 5px, #f00 6px);

background-size: 100% 100%;

}

可在页面中显示如图16所示的同心圆图案。

Android progressbar 圆环渐变色_ci_16

图16  同心圆(background-size: 100% 100%;)

若修改上面.shape样式中background-size属性定义为:background-size: 50% 100%;,则页面中显示如图17所示的图案。

Android progressbar 圆环渐变色_背景图_17

图17  同心圆(background-size: 50% 100%;)

若修改上面.shape样式中background-size属性定义为:background-size: 100% 50%;,则页面中显示如图18所示的图案。

Android progressbar 圆环渐变色_背景图_18

图18  同心圆(background-size: 100% 50%;)

若修改上面.shape样式中background-size属性定义为:background-size: 50% 50%;,则页面中显示如图19所示的图案。

Android progressbar 圆环渐变色_背景图_19

图19  同心圆(background-size: 50% 50%;)

若定义.shape的样式规则为:

.shape

{

position: absolute;

width: 262px;

height: 262px;

border-radius: 50%;

background: repeating-radial-gradient(#2a2928, #2a2928 4px, #ada9a0 5px,#2a2928 6px);

}

.shape:after

{

content: '';

position: absolute;

top: 50%;

left: 50%;

margin: -35px;

border: solid 1px #d9a388;

width: 68px;

height: 68px;

border-radius: 50%;

box-shadow: 0 0 0 4px #da5b33, inset 0 0 0 27px #da5b33;

background: #b5ac9a;

}

可在页面中显示如图20所示的唱片图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_20

图20  唱片

(2)圆与椭圆。

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 200px;

height: 200px;

border-radius: 50%;

border: 1px solid;

background: radial-gradient(50px 100px ellipse, transparent 40px, yellow 41px, red);

}

可在页面中显示如图21所示的圆中有椭圆的图案。

Android progressbar 圆环渐变色_ci_21

图21  圆与椭圆(1)

若修改.shape样式中background-image属性定义为:

background: radial-gradient(100px 50px ellipse, transparent 80px, yellow 81px, red);

可在页面中显示如图22所示的图案。

Android progressbar 圆环渐变色_ide_22

图22  圆与椭圆(2)

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 200px;

height: 200px;

border-radius: 50%;

background: radial-gradient(50px 100px ellipse, transparent 40px,

yellow 41px, red 49px, transparent 50px),

radial-gradient(30px circle, red, red 29px, transparent 30px);

}

可在页面中显示如图23所示的椭圆中有圆的图案。这个图案像一只竖眼。

Android progressbar 圆环渐变色_背景图_23

图23  椭圆与圆

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 200px;

height: 200px;

border: 1px solid;

background:radial-gradient(10px 18px ellipse, transparent 8px,

yellow 9px, red 11px, transparent 13px),

radial-gradient(6px circle, red, red 6px, transparent 7px);

background-size: 50px 50px;

}

可在页面中显示如图24所示的排列的竖眼图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_24

图24  “竖眼”的排列

若修改.shape样式中background-image属性定义为:

background:radial-gradient(10px 50px ellipse, transparent 8px,

yellow 9px, red 11px, transparent 13px),

radial-gradient(6px circle, red, red 6px, transparent 7px);

实际上只是将18px修改为50px,则在页面中显示如图25所示的图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_25

图25  竖线中夹着圆

(3)眼睛。

若定义.shape的样式规则为:

.shape

{

margin: 50px auto;

width: 224px;

height: 128px;

background-color: #333;

border-radius: 50% 50% 45% 42%;

background-image:

radial-gradient(circle at 128px 64px, white 10px, transparent 10px),

radial-gradient(circle at 112px 64px, #333 22px, transparent 22px),

radial-gradient(circle at 112px 64px, white 32px, transparent 32px);

}

可在页面中显示如图26所示的黑眼睛图案。

Android progressbar 圆环渐变色_ide_26

图26 黑眼睛

(4)圆弧切角。

若定义.shape的样式规则为:

.shape

{

margin: 50px auto;

width:200px;

height: 200px;

background:#f0f;

background:radial-gradient(circle at top left,transparent 25px,#f0f 0) top left,

radial-gradient(circle at top right,transparent 25px,#f0f 0) top right,

radial-gradient(circle at bottom right,transparent 25px,#f0f 0) bottom right,

radial-gradient(circle at bottom left,transparent 25px,#f0f 0) bottom left;

background-size: 50% 50%;

background-repeat: no-repeat;

}

可在页面中显示如图27所示的圆弧切角矩形图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_27

图27  圆弧切角矩形

(5)背景图案。

若定义.shape的样式规则为:

.shape

{

margin: 50px auto;

width:400px;

height: 400px;

background: radial-gradient(white 15%, transparent 16%),

radial-gradient(white 15%, transparent 16%), #d8d8d8;

background-position: 0 0, 50px 50px;

background-size: 100px 100px;

}

可在页面中显示如图28所示的圆点背景图案。

Android progressbar 圆环渐变色_ide_28

图28  圆点背景图案

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid rgba(50, 50, 50, 0.9);

background-image:radial-gradient(rgba(255,255,255,0.4) 15%,transparent 16%),

radial-gradient(rgba(255,255,255,0.4) 15%,transparent 16%),

radial-gradient(black 15%,transparent 16%),

radial-gradient(black 15%,transparent 16%);

background-position: 0 0px,10px 10px,0 1px,10px 11px;

background-size: 20px 20px;

}

可在页面中显示如图29所示的格子背景图案。

Android progressbar 圆环渐变色_ci_29

图29  格子背景图案

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid rgba(50, 50, 50, 0.9);

background:#ff0;

background-image:radial-gradient(closest-side, rgba(255,0,0,0) 98%,rgba(255,0,0,1) 99%);

background-size: 80px 80px;

}

可在页面中显示如图30所示的背景图案。下面有一些背景图案不好命名,就统一用背景图案称呼吧。

Android progressbar 圆环渐变色_背景图_30

图30  背景图案(1)

将图30的圆饼交错地进行迭加,修改.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid rgba(50, 50, 50, 0.9);

background:#ff0;

background-image:radial-gradient(closest-side, rgba(255,0,0,0) 98%,rgba(255,0,0,1) 99%),

radial-gradient(closest-side,rgba(255,0,0,0) 98%,

rgba(255,0,0,1) 99%);

background-position: 0 0px,40px 40px;

background-size: 80px 80px;

}

可在页面中显示如图31所示的背景图案。

Android progressbar 圆环渐变色_ide_31

图31  背景图案(2)

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid rgba(50, 50, 50, 0.9);

background:#ff0;

background-image:radial-gradient(closest-side, transparent 0%, transparent 75%,

#B6CC66 76%, #B6CC66 85%, #EDFFDB 86%, #EDFFDB 94%,

#FFFFFF 95%,#FFFFFF 103%, #D9E6A7 104%, #D9E6A7 112%);

background-size: 100px 100px;

}

可在页面中显示如图32所示的背景图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_32

图32  背景图案(3)

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid rgba(50, 50, 50, 0.9);

background:#ff0;

background-image:radial-gradient(closest-side, transparent 0%, transparent 75%,

#B6CC66 76%, #B6CC66 85%, #EDFFDB 86%, #EDFFDB 94%,

#FFFFFF 95%,#FFFFFF 103%, #D9E6A7 104%, #D9E6A7 112%),

radial-gradient(closest-side, transparent 0%, transparent 75%,

#B6CC66 76%, #B6CC66 85%, #EDFFDB 86%, #EDFFDB 94%,

#FFFFFF 95%,#FFFFFF 103%, #D9E6A7 104%, #D9E6A7 112%);

background-position: 0 0px, 50px 50px;

background-size: 100px 100px;

}

可在页面中显示如图33所示的背景图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_33

图33  背景图案(4)

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid rgba(50, 50, 50, 0.9);

background:#ff0;

background-image:radial-gradient(closest-side, transparent 0%, transparent 75%,

#B6CC66 76%, #B6CC66 85%, #EDFFDB 86%, #EDFFDB 94%,

#FFFFFF 95%,#FFFFFF 103%, #D9E6A7 104%, #D9E6A7 112%,

#798B3C 113%, #798B3C 121%, #FFFFFF 122%, #FFFFFF 130%,

#E0EAD7 131%, #E0EAD7 140%),

radial-gradient(closest-side, transparent 0%, transparent 75%,

#B6CC66 76%, #B6CC66 85%, #EDFFDB 86%, #EDFFDB 94%,

#FFFFFF 95%,#FFFFFF 103%, #D9E6A7 104%, #D9E6A7 112%, #798B3C 113%, #798B3C 121%, #FFFFFF 122%, #FFFFFF 130%,

#E0EAD7 131%, #E0EAD7 140%);

background-position: 0 0px, 50px 50px;

background-size: 100px 100px;

}

可在页面中显示如图34所示的背景图案。

Android progressbar 圆环渐变色_背景图_34

图34  背景图案(5)

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid rgba(50, 50, 50, 0.9);

background:#fff;

background-image: radial-gradient(SeaGreen  9px, transparent 10px),

repeating-radial-gradient(SeaGreen  0px, SeaGreen  4px, transparent 5px,

transparent 20px, SeaGreen  21px, SeaGreen  25px,

transparent 26px, transparent 50px);

background-position: 0 0;

background-size: 30px 30px, 90px 90px;

}

可在页面中显示如图35所示的背景图案。

Android progressbar 圆环渐变色_ide_35

图35  背景图案(6)

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid rgba(50, 50, 50, 0.9);

background:#ff0;

background-image: radial-gradient(closest-side circle at 60% 43%, #ff0 26%,rgba(255, 255, 0, 0) 27%),

radial-gradient(closest-side circle at 40% 43%, #ff0 26%,rgba(255, 255, 0, 0) 27%),

radial-gradient(closest-side circle at 40% 22%, #f00 45%,rgba(255, 0, 0, 0) 46%),

radial-gradient(closest-side circle at 60% 22%, #f00 45%, rgba(255, 0, 0, 0) 46%),

radial-gradient(closest-side circle at 50% 35%, #f00 30%, rgba(255, 0, 0, 0) 31%),

radial-gradient(closest-side circle at 60% 43%, #ff0 26%,rgba(255, 255, 0, 0) 27%),

radial-gradient(closest-side circle at 40% 43%, #ff0 26%,rgba(255, 255, 0, 0) 27%),

radial-gradient(closest-side circle at 40% 22%, #f00 45%, rgba(255, 0, 0, 0) 46%),

radial-gradient(closest-side circle at 60% 22%, #f00 45%, rgba(255, 0, 0, 0) 46%),

radial-gradient(closest-side circle at 50% 35%, #f00 30%, rgba(255, 0, 0, 0) 31%);

background-position: 0 0%, 0 0%, 0 0%, 0 0%, 0 0%,50px 50px, 50px 50px, 50px 50px, 50px 50px, 50px 50px;

background-size: 100px 100px;

}

可在页面中显示如图36所示的红心背景图案。

Android progressbar 圆环渐变色_背景图_36

图36  红心背景图案

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid;

background:radial-gradient(circle at 50% 59%, #fff 3%, #000 4%,

#000 11%,rgba(0,0,0,0) 12%, rgba(0,0,0,0)) 60px 0,

radial-gradient(circle at 50% 41%, #000 3%, #fff 4%, #fff 11%,

rgba(255,255,255,0) 12%, rgba(255,255,255,0)) 60px 0,

radial-gradient(circle at 50% 59%, #fff 3%, #000 4%,

#000 11%, rgba(0,0,0,0) 12%, rgba(0,0,0,0)) 0 60px,

radial-gradient(circle at 50% 41%, #000 3%, #fff 4%,

#fff 11%, rgba(255,255,255,0) 12%, rgba(255,255,255,0)) 0 60px,

radial-gradient(circle at 100% 50%, #fff 16%, rgba(255,255,255,0) 17%),

radial-gradient(circle at 0% 50%, #000 16%, rgba(0,0,0,0) 17%),

radial-gradient(circle at 100% 50%, #fff 16%,rgba(255,255,255,0) 17%) 60px 60px,

radial-gradient(circle at 0% 50%, #000 16%,rgba(0,0,0,0) 17%) 60px 60px;

background-color:#f0f;

background-size:120px 120px;

}

可在页面中显示如图37所示的太极背景图案。

Android progressbar 圆环渐变色_css 渐变 椭圆_37

图37  太极背景图案

若定义.shape的样式规则为:

.shape

{

margin: 0 auto;

width: 400px;

height: 300px;

border: 1px solid;

background:radial-gradient(circle farthest-side at 0% 50%,

#fb1 23.5%,rgba(240,166,17,0) 0) 21px 30px,

radial-gradient(circle farthest-side at 0% 50%,

#B71 24%,rgba(240,166,17,0) 0) 19px 30px,

linear-gradient(#fb1 14%,rgba(240,166,17,0) 0,

rgba(240,166,17,0) 85%,#fb1 0) 0 0,

linear-gradient(150deg,#fb1 24%,#B71 0,#B71 26%,

rgba(240,166,17,0) 0,rgba(240,166,17,0) 74%,

#B71 0,#B71 76%,#fb1 0) 0 0,

linear-gradient(30deg,#fb1 24%,#B71 0,#B71 26%,

rgba(240,166,17,0) 0,rgba(240,166,17,0) 74%,

#B71 0,#B71 76%,#fb1 0) 0 0,

linear-gradient(90deg,#B71 2%,#fb1 0,#fb1 98%,#B71 0%) 0 0 #fb1;

background-size:40px 60px;

}

可在页面中显示如图38所示的六边形地砖背景图案。

Android progressbar 圆环渐变色_背景图_38

图38  六边形地砖背景图案

3.径向渐变在动画制作中的应用实例

利用径向渐变绘制图形,定义适当的关键帧,可以实现动画效果。

(1)圆点的扩散。

编写如下的HTML文件。

Android progressbar 圆环渐变色_ide_39

Android progressbar 圆环渐变色_css 渐变 椭圆_40

html>圆点的扩散title>