我们都知道CSS3 的渐变属性Gradient,分为linear-gradient(线性渐变)和radial-gradient(径向渐变)。这一次我们学习的是CSS3的径向渐变属性radial-gradient。关于径向渐变属性radial-gradient,它的语法如下所示:
语法:
radial-gradient([<bg-position> || <angle>,]? [<shape> || <size>,]? <color-stop>, <color-stop>[, <color-stop>]*);
具体示例:
background:-moz-radial-gradient(#f00, #000, #666);
background:-webkit-radial-gradient(#f00, #000, #666);
background:radial-gradient(#f00, #000, #666);
background:-moz-radial-gradient(left top,circle cover,#f00 20%,#ff0 50%,#080 80%);
background:-webkit-radial-gradient(left top,circle cover,#f00 20%,#ff0 50%,#080 80%);
取值:
<bg-position>:[ <length>① | <percentage>① | left | center① | right ]? [ <length>② | <percentage>② | top | center② | bottom ]?
<shape>:circle | ellipse
<size>:closest-side | closest-corner | farthest-side | farthest-corner | contain | cover
<color-stop>:<color> [ <length> | <percentage> ]
<bg-position>
<percentage>①:用百分比指定径向渐变圆心的横坐标值。可以为负值。
<length>①:用长度值指定径向渐变圆心的横坐标值。可以为负值。
left:设置左边为径向渐变圆心的横坐标值。
center①:设置中间为径向渐变圆心的横坐标值。
right:设置右边为径向渐变圆心的横坐标值。
<percentage>②:用百分比指定径向渐变圆心的纵坐标值。可以为负值。
<length>②:用长度值指定径向渐变圆心的纵坐标值。可以为负值。
top:设置顶部为径向渐变圆心的纵坐标值。
center②:设置中间为径向渐变圆心的纵坐标值。
bottom:设置底部为径向渐变圆心的纵坐标值。
<shape>
circle:指定圆形的径向渐变
ellipse:指定椭圆形的径向渐变。
<size>
用来定义圆或椭圆大小的点:值说明如下
closest-side:指定径向渐变的半径长度为从圆心(center)到离圆心最近的边
closest-corner:指定径向渐变的半径长度为从圆心(center)到离圆心最近的角
farthest-side:指定径向渐变的半径长度为从圆心(center)到离圆心最远的边
farthest-corner:指定径向渐变的半径长度为从圆心(center)到离圆心最远的角
contain:包含,指定径向渐变的半径长度为从圆心(center)到离圆心最近的点。类同于closest-side
cover:覆盖,指定径向渐变的半径长度为从圆心(center)到离圆心最远的点。类同于farthest-corner
<percentage>:用百分比指定径向渐变的横向或纵向直径长度,并根据横向和纵向的直径来确定是圆或椭圆。不允许负值。
<length>:用长度值指定径向渐变的横向或纵向直径长度,并根据横向和纵向的直径来确定是圆或椭圆。不允许负值。
<color-stop>
指定起止和结束的颜色
<color>:指定颜色。请参阅颜色值
<length>:用长度值指定起止色位置。不允许负值
<percentage>:用百分比指定起止色位置。
下面来看具体的例子:以下例子我们是在chrome和firefox中测试
所有demo的公用样式为:
.com{ width:200px; height:200px; }
1、例子一:默认的<shape>和<size>
html:
<div class=”com demo”></div>
css:
.demo{ background:-moz-radial-gradient(#f00, #000, #666); background:-webkit-radial-gradient(#f00, #000, #666); background:radial-gradient(#f00, #000, #666); }效果:
2、例子二:
html:
<div class=”com demo1″></div>
css:
.demo1{ background:-moz-radial-gradient(#f00 10%, #000 30%, #666 60%); background:-webkit-radial-gradient(#f00 10%, #000 30%, #666 60%); background:radial-gradient(#f00 10%, #000 30%, #666 60%); }效果:
从这个例子我们可以看出于上面例子的区别,第二个例子和第一个例子的区别主要是:我们用百分比指定了起止色位置。 因为在径向渐变中,如果没有设置位置时,其默认颜色为均匀间隔, 这一点和css3的线性渐变是一样的,如果设置了渐变位置就会按照渐变位置去渐变, 这就是我们示例一和示例二的区别之处: 虽然圆具有相同的起止颜色, 但在示例一为默认的颜色间隔均匀的渐变,而示例二每种颜色都有特定的位置。这种写法,经过自己测试(最新版本浏览器),其实只写标准的,在opera、chrome、firefox表现是一致的。
3、例子三:加上的<bg-position>和<shape> :指定圆形的径向渐变
html:
<div class=”com demo2″></div>
css:
.demo2{ width:400px; background:-moz-radial-gradient(left top, circle, #f00, #000, #666); background:-webkit-radial-gradient(left top, circle, #f00, #000, #666); }效果:
但是这种写法,经过自己测试,必须加私有前缀才可以。
4、例子四:指定椭圆形的径向渐变
html:
<div class=”com demo3″></div>
css:
.demo3{ width:400px; background:-moz-radial-gradient(left top, ellipse, blue, #f00, #1d90FF); background: -webkit-radial-gradient(left top, ellipse, blue, #f00, #1d90FF); }效果:
html:
<div class=”com closest-side”></div>
<div class=”com closest-corner”></div>
<div class=”com farthest-side”></div>
<div class=”com farthest-corner”></div>
<div class=”com contain”></div>
<div class=”com cover”></div>
css:
.closest-side{ width:400px; background:-moz-radial-gradient(circle closest-side,#f00,#ff0,#070); background:-webkit-radial-gradient(circle closest-side,#f00,#ff0,#070); } .closest-corner{ width:400px; background:-moz-radial-gradient(circle closest-corner,#f00,#ff0,#070); background:-webkit-radial-gradient(circle closest-corner,#f00,#ff0,#070); } .farthest-side{ width:400px; background:-moz-radial-gradient(circle farthest-side,#f00,#ff0,#070); background:-webkit-radial-gradient(circle farthest-side,#f00,#ff0,#070); } .farthest-corner{ width:400px; background:-moz-radial-gradient(circle farthest-corner,#f00,#ff0,#070); background:-webkit-radial-gradient(circle farthest-corner,#f00,#ff0,#070); } .contain{ width:400px; background:-moz-radial-gradient(circle contain,#f00,#ff0,#070); background:-webkit-radial-gradient(circle contain,#f00,#ff0,#070); } .cover{ width:400px; background:-moz-radial-gradient(circle cover,#f00,#ff0,#070); background:-webkit-radial-gradient(circle cover,#f00,#ff0,#070); }效果:
closest-side效果:(指定径向渐变的半径长度为从圆心(center)到离圆心最近的边)
closest-corner效果:(指定径向渐变的半径长度为从圆心(center)到离圆心最近的角)
farthest-side效果:(指定径向渐变的半径长度为从圆心(center)到离圆心最远的边)
farthest-corner效果:(指定径向渐变的半径长度为从圆心(center)到离圆心最远的角)
contain效果:(包含,指定径向渐变的半径长度为从圆心(center)到离圆心最近的点。类同于closest-side)
cover效果:(覆盖,指定径向渐变的半径长度为从圆心(center)到离圆心最远的点。类同于farthest-corner)