radial-gradient( [[ circle || <length > ] [ at <position> ]?, | [ ellipse || [ <length> ]{2} ] [ at <position> ]?,| [[ circle | ellipse ] || <extent-keyword> ] [ at <position> ]? ,| at <position> ,]? <color-stop> [,<color-stop> ] + )
这是一种正则表达式,大家可以去搜索一下各个符号代表的意思。总的来说,符号?表示前面由[]括起来的字符串可以出现0或1次;符号+表示前面由[]括起来的字符串可以出现1或多次;符号|代表或的意思,即左右字符串二选一;符号||应该按照无关事件来理解,即左字符串是否存在对右字符串没有影响,即左右字符串是无关的。最后大家要理清楚上述公式的层次结构。
radial-gradient( [[ <shape> || <size> ][ at <position> ]?,| at <position> ,]?< color> [, <color-stop> ] +)
<shape>: 定义径向渐变的形状,包括circle(圆)和ellipse(椭圆),默认值为ellipse. <size>: 定义圆的半径或者椭圆的轴长度,有三种情形。第一种情形是使用<extent-keyword>进行声明,默认为farthest-corner;第二种情形是当shape为circle时,通过使用px等长度单位来声明径向渐变圆的半径;第三种情形是当shape为ellipse时,通过使用两个长度单位来分别声明径向渐变椭圆的长半轴和短半轴。
at <position>: 定义渐变的起始点,取值包含数值、百分比,也可以使用关键字。其中left、center和right关键字用于定义x轴坐标,top、center、bottom用于定义y轴坐标,如:at left top 将渐变中心定于左上角。当只指定一个值时,另一个值默认为center。 <color-stop>: 色标,由颜色和步长组成,这个容易懂,不细讲。
将渐变中心定在容器的左边的中间位置,渐变圆的半径设置为100px,
如果是设置椭圆形的渐变尺寸,则需要给出两个长度:第一个指定水平方向的尺寸,即水平半轴为200px,第二个指定垂直方向的尺寸,即垂直半轴为100px。
因为水平半轴和垂直半轴均为50px,虽然shape设置为ellipse,但最终呈现出的渐变形状仍为正圆。
渐变中心被设置在上边框的中间位置,根据farthest-side的用法规则,此时椭圆的水平半轴和垂直半轴均为300px,则最终呈现效果仍为正圆。
渐变中心在(50px,50px)处,经分析得,此时离渐变中心最近的顶角为左上顶角,故渐变边缘形状经过左上顶角,且宽高比例与closest-side相同,此时仍为正圆。
渐变中心在(300px,0px)处,根据farthest-corner用法规则,则渐变边缘应该经过边框下面的两个顶角,且椭圆的宽高比与farthest-side相同,所以此时呈现的仍为正圆。 其他用法比较容易,就不展示了,可以查看其他人写的技术博客,比如各种色标的分配问题。