CSS 3 学习——渐变

通过CSS渐变创建的是一个没有固定比例和固定尺寸的<image>类型,也就是说是一张图片,这张图片的尺寸由所应用的元素的相关信息决定。凡是支持图片类型的CSS属性都可以设置渐变,而支持颜色值的CSS属性就不能设置渐变。比如,background-image可以设置渐变,background-color不能设置渐变。

所有现代浏览器都支持渐变的W3C标准语法,包括IE10。

渐变类型有两种:线性渐变和径向渐变。

线性渐变

线性渐变可以通过两个函数指定:linear-gradient() 和 repeating-linear-gradient()。

线性渐变的大概原理图(图中“已设置背景渐变为例”中的“已”应为“以”):

我们视觉上看到渐变效果上的那些色带实际上是与渐变轴垂直的。如果我们在渐变区域内任意做一条渐变轴的垂线,那么垂线上的点的颜色是完全相同的。

linear-gradient()

W3C标准语法:

<linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+)

<angle> 是角度,单位deg

<side-or-corner> = [left | right] || [top | bottom]

<color-stop> = <color> [ <length> | <percentage> ]?

取值:

下述值用来表示渐变的方向,可以使用角度或者关键字来设置:

<angle>:
用角度值指定渐变的方向(或角度)。
to left:
设置渐变为从右到左。相当于: 270deg
to right:
设置渐变从左到右。相当于: 90deg
to top:
设置渐变从下到上。相当于: 0deg
to bottom:
设置渐变从上到下。相当于: 180deg。这是默认值,等同于留空不写。

<color-stop> 用于指定渐变的起止颜色:

<color>:指定颜色。
<length>:用长度值指定起止色位置。不允许负值
<percentage>:用百分比指定起止色位置。
下面看一个示例
代码:
 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 <title>CSS3 渐变</title>
 6 <style type="text/css">
 7    *{
 8     padding: 0;
 9     margin: 0;
10    }
11    html,body{
12     height: 100%;
13     background-color: #008888;
14    }
15    #wikipedia{
16     position: relative;
17     margin:auto;
18     margin-top:200px;
19     width: 170px;
20     height: 170px;
21     /*background-image: repeating-linear-gradient(to bottom,black,#fff,red);*/
22     background-image: linear-gradient(to bottom,black,red,#fff);
23     background-repeat: no-repeat;
24    }
25
26    </style>
27 </head>
28 <body>
29    <section class="flex-continer" id="wikipedia">
30
31    </section>
32 </body>
33 </html>

效果

对于不指定具体位置的渐变,颜色的分界点在哪儿,举例说明。

background-image: linear-gradient(to bottom,black,red,gray,blue,green);
示意图
设置了5种颜色,这5种颜色从渐变轴上的开始点开始到渐变轴上的结束点为止,把这之间的距离均分成了4段;如果设置4种颜色,就均分成3段,依次类推。
下面看看指定了具体位置的渐变的情况。
在linear-gradient()函数中,从左到右相邻颜色名后指定的位置的差值,就是从前一个颜色渐变到后一个颜色的渐变带的宽度。如果差值不大于零,则没有渐变效果。而且第一个颜色名后指定的位置,实际上是从渐变开始点算起,第一个颜色的纯色带在渐变轴方向上的宽度,这个位置以后才有可能有渐变效果。最后一个颜色名后的位置与第一个颜色名后的位置的差值,是从第一个颜色渐变到最后一个颜色的总的渐变带的宽度,最后一个位置往后都是纯色。(这里说的位置是渐变轴上从渐变开始点算起的位置)
例 1、
代码:
 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 170px;
15     height: 170px;
16     /*background-image: repeating-linear-gradient(to bottom,black,#fff,red);*/
17     background-image: linear-gradient(to bottom,black 40px,red 20px,#fff 40px);
18     /*background-image: linear-gradient(to bottom,black,red,gray,blue,green);*/
19     background-repeat: no-repeat;
20    }
21    #a{
22     position:absolute;
23     width:20px;
24     height:40px;
25    top:0px;
26     left:0;
27     background-color: green;
28    }
29    </style>
30 <body>
31    <section class="flex-continer" id="wikipedia">
32        <div id="a"></div>
33    </section>
34 </body>

效果:

图中绿色矩形高度为40px,用于对比测试。

例 2、

为了验证上面的解释,使用了3、4、5和60deg的特殊直角三角关系。

代码:

 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 360px;
15     height: 270px;
16     /*background-image: repeating-linear-gradient(to bottom,black,#fff,red);*/
17     background-image: linear-gradient(60deg,black 50px,red 60px,#fff 100px);
18     /*background-image: linear-gradient(to bottom,black,red,gray,blue,green);*/
19     background-repeat: no-repeat;
20    }
21    #a{
22     position:absolute;
23     width:40px;
24     height:30px;
25     bottom:0px;
26     left:0;
27     background-color: green;
28    }
29    </style>
30 </head>
31 <body>
32    <section class="flex-continer" id="wikipedia">
33       <div id="a"></div>
34    </section>
35 </body>

效果:

图中绿色方块宽40px,高30px,对角线50px。整个背景区域宽360px,高270px。

repeating-linear-gradient()

repeating-linear-gradient()设置重复的线性渐变。他的语法与linear-gradient()的一样。

语法:

<repeating-linear-gradient> = linear-gradient([ [ <angle> | to <side-or-corner> ] ,]? <color-stop>[, <color-stop>]+)

<side-or-corner> = [left | right] || [top | bottom]

<color-stop> = <color> [ <length> | <percentage> ]?

取值:

下述值用来表示渐变的方向,可以使用角度或者关键字来设置:

<angle>:用角度值指定渐变的方向(或角度)。to left:设置渐变为从右到左,相当于: 270deg;to right:设置渐变从左到右,相当于: 90deg;to top:设置渐变从下到上,相当于: 0deg;to bottom:设置渐变从上到下。相当于: 180deg。这是默认值,等同于留空不写。

<color-stop> 用于指定渐变的起止颜色:

<color>:

指定颜色。

<length>:

用长度值指定起止色位置。不允许负值

<percentage>:

用百分比指定起止色位置。

在颜色名后不指定具体位置时,他的效果与linear-gradient()的效果一样。看例子。

以本篇的第一个例子为例,只修改第22行代码:

background-image: linear-gradient(to bottom,black,red,#fff);

为:

background-image: repeating-linear-gradient(to bottom,black,red,#fff);

最后效果完全一样:

如果颜色名后指定了具体位置,两者的差别就很明显了。

一般情况下,第一个颜色名后的位置,实际上是第一个重复单元在渐变轴上开始的位置;最后一个颜色名后的位置,实际上是第一个重复单元在渐变轴上结束的位置,中间的颜色名在重复单元中按顺序依次排列。

在实际应用中,情况比较复杂,不光是只看第一个颜色名和最后一个颜色名后的位置,而是对比除第一个颜色名外所有颜色名后的位置的数值,数值最大的,就是重复单元中的最后一个颜色。(对于不一般的情况,情形太多,没有一一去试)

例1、

代码:

 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 360px;
15     height: 270px;
16     background-image: repeating-linear-gradient(to bottom,black 80px,red 90px,#fff 110px);
17     /*background-image: linear-gradient(60deg,black 50px,red 60px,#fff 100px);*/
18     /*background-image: linear-gradient(to bottom,black,red,gray,blue,green);*/
19     background-repeat: no-repeat;
20    }
21    #a{
22     position:absolute;
23     width:30px;
24     height:30px;
25     top:20px;
26     left:0;
27     background-color: green;
28    }
29    </style>
30 </head>
31 <body>
32    <section class="flex-continer" id="wikipedia">
33       <div id="a"></div>
34    </section>
35 </body>

效果:

background-image: repeating-linear-gradient(to bottom,black 80px,red 90px,#fff 110px);

上面代码中,黑色在渐变轴方向上距渐变的开始点80px处开始,即黄线与渐变轴的交点。从这一点开始,颜色从黑色先渐变到红色再渐变到白色,至110px处结束,形成第一个重复单元,然后往下依次用重复单元填充背景区域的余下空间。填充到底部时,再循环到顶部开始,直到填充完整个背景区域。(图中的绿色小方块宽和高均为20px,绝对定位,top属性为20px)

这里第一个颜色名后的数值不像linear-gradient()中第一个名后的数值会形成指定宽度的纯色带。

要用repeating-linear-gradient()形成纯色带,可以像下面这样写代码:

background-image: repeating-linear-gradient(to bottom,black 80px,black 110px,#fff 110px,#fff 140px);

效果:

径向渐变

径向渐变可以通过两个函数指定:radial-gradient() 和 repeating-radial-gradient()。

径向渐变以指定的点为中心点,向四周以同心圆或同心椭圆的形状按指定的颜色渐变。

下面还以背景区域为例讲解。

radial-gradient()

radial-gradient() 的语法(按正则表达式的规则理解):

radial-gradient() = radial-gradient(
  [ [ circle               || <length> ]                  [ at <position> ]? , |
    [ ellipse              || <length-percentage>{2} ]    [ at <position> ]? , |
    [ [ circle | ellipse ] || <extent-keyword> ]          [ at <position> ]? , |
    at <position> ,
  ]?
  <color-stop> [ , <color-stop> ]+
)
<extent-keyword> = closest-corner | closest-side | farthest-corner | farthest-side

指定渐变形状

1、形状关键字

circle  表示圆形

ellipse 表示椭圆形

可以直接以关键字circle或ellipse指定渐变形状,也可以通过数值指定渐变的形状。圆形就指定一个数值,表示半径;椭圆就指定两个不相等的数值,第一个是水平轴,第二个是垂直轴,如果水平轴等于垂直轴,其实就是一个正圆。(默认形状要看背景区域的尺寸,背景区域是正方形,就是原型,否则就是椭圆)

形状关键字为circle时,表示半径的数值不能使用百分数,且不能指定超过一个值;形状关键字为ellipse时,可以使用百分数数值,且必须指定两个值(分别代表水平轴和垂直轴)或不指定值,不能只指定一个值。

2、半径或轴长关键字<extent-keyword>

<extent-keyword>的取值:

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

closest-corner
渐变的边缘形状与容器距离渐变中心点最近的一个角相交。

farthest-side
与closest-side相反,边缘形状与容器距离渐变中心点最远的一边相切(或最远的垂直和水平边)。

farthest-corner
渐变的边缘形状与容器距离渐变中心点最远的一个角相交。

以上设置的半径或轴长,实际上指的是从渐变中心点开始,从第一个颜色渐变到最后一个颜色时,渐变带在水平径向上和垂直径向上的宽度,每种颜色的分布(没有指定结束位置),与前面线性渐变颜色在渐变轴上的分布一样。

例子:

代码:

 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 400px;
15     height: 400px;
16     background-image: radial-gradient(circle 100px,black,#fff,red);
17     /*background-image: linear-gradient(60deg,black 50px,red 60px,#fff 100px);*/
18     background-repeat: no-repeat;
19    }
20    #a{
21     position:absolute;
22     width:100px;
23     height:100px;
24     top:150px;
25     left:150px;
26     background-color: rgba(31,131,33,0.2);
27    }
28    </style>
29 </head>
30 <body>
31    <section class="flex-continer" id="wikipedia">
32       <div id="a"></div>
33    </section>
34 </body>

效果:

图中泛绿的透明小方块宽和高均为100px,在背景区域的正中心,作参照。整个背景区域宽和高均为400px。整个渐变区域从正中心开始,由黑色先渐变到白色(从黑到白,渐变带50px),再从白色渐变到红色(也是50px),最终整个渐变带从正中心到结束宽100px,就是CSS代码中设置的100px。

指定渐变中心点位置<position>

指定玩形状之后,还可以指定渐变的中心点位置。<position> 与 background-position 或者 transform-origin 类似。指定具体数值时,可以指定为负值。如果不指定,以背景区域为例,则在背景区域的正中心。(规范中有一个gradient box 术语)

 指定颜色的位置<color-stop>

<color-stop>表示某个确定位置的固定色值,包含一个<color>值加上可选的位置值(相对虚拟渐变射线的<percentage>或者<length>长度值)。 百分比值0%,或者长度值0,表示渐变中心点;百分比值100%表示渐变射线(以渐变中心点为端点)与gardient box边缘相交的点。 其间的百分比值线性对应渐变射线上的点。

这里百分数的计算,我猜测:以渐变中心点为端点,向gardient box的四个顶点做线段,以得到的四条线段中最长的那一条为准计算百分数的值。

例子1、

代码:

 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 400px;
15     height: 200px;
16     background-image: radial-gradient(circle at 0px 0px,black 50%,#fff,red);
17     /*background-image: linear-gradient(60deg,black 50px,red 60px,#fff 100px);*/
18     background-repeat: no-repeat;
19    }
20    #a{
21     position:absolute;
22     width:200px;
23     height:100px;
24     top:0px;
25     left:0px;
26     background-color: rgba(31,131,33,0.3);
27    }
28    </style>
29 </head>
30 <body>
31    <section class="flex-continer" id="wikipedia">
32       <div id="a"></div>
33    </section>
34 </body>

效果:

图中径向渐变的中心点为0px 0px,即背景区域的左上角顶点。背景区域宽为400px,高为200px,绿色方框宽为200px,高为100px,黑色的结束位置设置为100%,从图上看,就是背景区域对角线的重点位置。

再看一个例子2、

代码:

 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 500px;
15     height: 400px;
16     background-image: radial-gradient(circle at 100px 200px,black 50%,#fff,red);
17     /*background-image: linear-gradient(60deg,black 50px,red 60px,#fff 100px);*/
18     background-repeat: no-repeat;
19    }
20    #a{
21     position:absolute;
22     width:200px;
23     height:100px;
24     top:200px;
25     left:100px;
26     background-color: rgba(31,131,33,0.3);
27    }
28    </style>
29 </head>
30 <body>
31    <section class="flex-continer" id="wikipedia">
32       <div id="a"></div>
33    </section>
34 </body>

效果:

还有一个例子3、

 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 500px;
15     height: 500px;
16     background-image: radial-gradient(circle at 100px 300px,black 50%,#fff,red);
17     /*background-image: linear-gradient(60deg,black 50px,red 60px,#fff 100px);*/
18     background-repeat: no-repeat;
19    }
20    #a{
21     position:absolute;
22     width:200px;
23     height:150px;
24     bottom:200px;
25     left:100px;
26     background-color: rgba(31,131,33,0.3);
27    }
28    </style>
29 </head>
30 <body>
31    <section class="flex-continer" id="wikipedia">
32       <div id="a"></div>
33    </section>
34 </body>

效果:

通过上面的例子可以看到,第一个颜色名后跟位置值形成了一个以该值为半径的纯色块,与线性渐变的原理是相通的(不再解释了,语言组织能力不行)。

直接看例子:

代码:

 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 500px;
15     height: 500px;
16     background-image: radial-gradient(circle at 100px 300px,black 100px,#fff 300px,red 100%);
17     /*background-image: linear-gradient(60deg,black 50px,red 60px,#fff 100px);*/
18     background-repeat: no-repeat;
19    }
20    #a{
21     position:absolute;
22     width:100px;
23     height:100px;
24     bottom:200px;
25     left:100px;
26     background-color: rgba(31,131,33,0.3);
27    }
28    </style>
29 </head>
30 <body>
31    <section class="flex-continer" id="wikipedia">
32       <div id="a"></div>
33    </section>
34 </body>

效果:

在这个例子中白色的位置在与以渐变中心点为圆心并与背景区域顶部相切的圆上。从白色渐变到白色的渐变带的宽度为200px(300px - 100px)。

repeating-radial-gradient()

repeating-radial-gradient()设置重复径向渐变。

语法与radial-gradient()的语法一样:

repeating-radial-gradient(
       [[ circle  || <length> ]                     [at <position>]? , |
        [ ellipse || [<length> | <percentage> ]{2}] [at <position>]? , |
        [[ circle | ellipse ] || <extent-keyword> ] [at <position>]? , |
                                                     at <position>   ,    <color-stop> [ , <color-stop> ]+ )

原理与重复线性渐变的原理相通(不是相同)。第一个颜色名后指定的位置,实际上是第一个重复单元的开始的位置,不指定就从渐变中心点开始。一般情况下最后一个颜色明后的位置与第一个颜色名后的位置的差值,就是一个重复单元在水平径向上的宽度。

看例子1、

代码:

 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 500px;
15     height: 500px;
16     background-image: repeating-radial-gradient(ellipse  40px 30px at 100px 300px,black,#fff 100px,red 300px );
17     /*background-image: radial-gradient(circle at 100px 300px,black 100px,#fff 300px,red 100%);*/
18     background-repeat: no-repeat;
19    }
20    #a{
21     position:absolute;
22     width:300px;
23     height:225px;
24     bottom:200px;
25     left:100px;
26     background-color: rgba(31,131,33,0.3);
27    }
28    </style>
29 </head>
30 <body>
31    <section class="flex-continer" id="wikipedia">
32       <div id="a"></div>
33    </section>
34 </body>

效果:

在上面的例子中巧了,设置的椭圆的水平轴与垂直轴的比例刚好与图中蓝色线条围起来的矩形的宽与高的比例相同。如果我不设置水平轴与垂直轴,出来的效果与上图一样,也就是说呈现出来的径向渐变形状的水平轴与垂直轴的比例由设置的水平轴与垂直轴的比例决定(只是取其比例,不论具体数值);不设置设置水平轴与垂直轴,就根据渐变中心点与gradient box的距渐变中心点最远的那个角(farthest-corner)围成的矩形的比例决定渐变的形状。

再看个例子2、

代码:

 1 <style type="text/css">
 2    *{
 3     padding: 0;
 4     margin: 0;
 5    }
 6    html,body{
 7     height: 100%;
 8     background-color: #008888;
 9    }
10    #wikipedia{
11     position: relative;
12     margin:auto;
13     margin-top:200px;
14     width: 500px;
15     height: 500px;
16     background-image: repeating-radial-gradient(ellipse 30px 10px at 100px 300px,black 90px,#fff 150px,red 200px );
17     /*background-image: radial-gradient(circle at 100px 300px,black 100px,#fff 300px,red 100%);*/
18     background-repeat: no-repeat;
19    }
20    #a{
21     position:absolute;
22     width:90px;
23     height:30px;
24     bottom:200px;
25     left:100px;
26     background-color: rgba(31,131,33,0.5);
27    }
28    </style>
29 </head>
30 <body>
31    <section class="flex-continer" id="wikipedia">
32       <div id="a"></div>
33    </section>
34 </body>

效果:

指定的椭圆水平轴与垂直轴的比例为30px : 10px = 3 : 1,第一个重复的位置开始的位置在水平方向上距离渐变中心点90px处,绿色小方框的宽为90px,高为30px,是根据 3 : 1 的比例算出来的。

上面只是看了一般情况的例子,不一般的情况没有举例。在官方文档中 3.4小节中有说明(链接在下面参考文章中)。

(完)

参考文章:

1、MDN

2、w3chtml上的参考手册

4、再说CSS3渐变——线性渐变

5、为什么要使用repeating-linear-gradient

6、再说CSS3渐变——径向渐变

7、官方文档(草案)

时间: 2024-10-14 21:47:56

CSS 3 学习——渐变的相关文章

HTML&CSS基础学习笔记8-预格式文本

<pre>标签的主要作用是预格式化文本.被包围在 pre 标签中的文本通常会保留空格和换行符.而文本也会呈现为等宽字体. <pre>标签的一个常见应用就是用来表示计算机的源代码.当然你也可以在你需要在网页中预显示格式时使用它. 会使你的文本换行的标签(例如<h>.<p>)绝不能包含在 <pre> 所定义的块里.尽管有些浏览器会把段落结束标签解释为简单地换行,但是这种行为在所有浏览器上并不都是一样的. 更多学习内容,就在码芽网http://www.

HTML&CSS基础学习笔记13—无序列表

无序列表 有时我们的工作繁忙,杂事很多,怕忘记,就会把事情一件件列出来,防止忘记. 它们的排列顺序对于我们来说并不重要,可以随意调换,我们将它称为无序列表,HTML里用<ul>标签来表示无序列表,列表里的项目则用<li>标签来表示: 1 2 3 4 5 <ul>     <li></li>     <li></li>     ... </ul> 看一段实例代码: 对于的浏览器显示结果是这样的: 更多内容学习,请

CSS基础学习十四:盒子模型补充之display属性设置

我在CSS基础学习十三:盒子模型的i博文只是阐释了CSS盒子模型,并没有过多的使用实例来演示.这篇博文 就来做一些盒子模型知识的补充.这一部分对于网页总体布局还是蛮重要的,过去大多数使用HTML中的table元素和 框架标签来进行网页的整体布局,现在我们使用最多的是DIV+CSS网页布局.所以一定要掌握好盒子模型,记住 content,border,padding和margin各自在盒子中的作用和使用方式. 先来看一个完整元素的盒子模型实例: <!DOCTYPE html PUBLIC "

HTML CSS——position学习终结者(二)

在博客<HTML CSS--position学习终结者(一)>中我们认识到如果某一absolute作用的元素的父对象(或曾祖父,只要是父级对象)设置了position属性且position的属性值为absolute.relative或者fixed,那么这个子元素会参照离它(指子元素)最近的且position的属性值为absolute.relative或者fixed的父元素进行定位,子元素的定位点为父元素的左上角,学习过padding的人可能会这样想:这个时候如果父元素设置了padding样式,

CSS基础学习十五:盒子模型补充之外边距合并

今天继续接着CSS盒子模型补充,CSS基础学习十三:盒子模型和CSS基础学习十四:盒子模型补充之display属 性设置都是介绍了盒子模型中的内容概括.开始今天的主题:外边距合并. 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合 并的外边距的高度中的较大者. (1)外边距合并 外边距合并叠加是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外 边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的

CSS基础学习十一:选择器的优先级

在CSS基础学习的篇章中,从第四篇博客开始说选择器,到昨天基本已经说完了.今天我们总结一下,选择器作 用:告知浏览器需要设置哪个dom元素的样式.最后来说说选择器一个重要的问题,选择器的优先级.判断优先级的 方法就是尝试!!! 一简单选择器的优先级 简单的选择器包括我们在第四篇,第五篇,第六篇博客的元素选择器(标签选择器),类选择器和id选择器. 我们来试验: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&quo

HTML&CSS基础学习笔记15-合并单元格

合并单元格 之前的文章中,我们已经能够创建一个简单地表格了,如果我们需要把横向的某两个相邻单元格<td>或者纵向的某两个相邻单元格<td>合并,我们该怎么做呢?我们要知道的知识点如下: 1.标签<td>的[colspan]属性规定单元格可横跨的列数,即横向合并的单元格数: 2.标签<td>的[rowspan] 属性规定单元格可横跨的行数,即纵向合并的单元格数: 3.这2个标签也可以同时使用. 样式示例: 现在就来试试合并单元格吧: <!DOCTYPE 

根据兄弟元素的数量来设置样式(CSS揭秘学习笔记)

CSS揭秘学习笔记 li.length == 4 li:first-child:nth-last-child(4), li:first-child:nth-last-child(4) ~ li { /* 当列表正好包含四项时,命中所有列表项 */ } li.length >= 4 li:first-child:nth-last-child(n+4), li:first-child:nth-last-child(n+4) ~ li { /* 当列表至少包含四项时,命中所有列表项 */ } li.l

CSS入门级学习

css入门学习1:认识CSS 1.1:css简介,css全称是层叠样式表,Cascading style sheets 1.2:css的作用,主要是用于定义html内容在浏览器内的显示样式,如文字大小,颜色,字体加粗等 使用css样式的一个好处是通过定义某个样式,可以让不同的网页位置的字体有着统一的字体,字号或者颜色等 1.3:css代码语法 css样式由选择器和声明组成,而声明又由属性和值组成 h1 { color:red;font-size:14px;} 选择器 属性 值{属性和值构成声明}