![HTML+CSS+JavaScript网页制作:Web前端开发(第3版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/108/41865108/b_41865108.jpg)
4.3 CSS语法基础
前面介绍了如何在网页中定义和引用CSS样式表,接下来要讲解CSS是如何定义网页外观的。其定义的网页外观由样式规则和选择符决定。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/75_02.jpg?sign=1739279781-S2yhwyvwyfPCYZdXjr9SgvD6nVMeaFR6-0-38710574eb9c677ef3094fe01ebf8299)
16 CSS的基本语法
4.3.1 CSS样式规则
CSS为样式化网页内容提供了一条捷径,即样式规则。每一条样式规则都是单独的语句。
1.样式规则
样式表的每条规则都有两个主要部分:选择符(selector)和声明(declaration)。选择符决定哪些因素要受到影响,声明由一个或多个属性及其属性值组成。其语法如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/75_03.jpg?sign=1739279781-CVkhTxP0XOypuWwAHjlakBWmyE2TBa0H-0-e0af98c4c09d0136c2984e8f3ecacfb2)
selector表示要进行格式化的元素;在选择器后的大括号中的即为声明部分;用“属性:属性值”描述要应用的格式化操作。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/75_04.jpg?sign=1739279781-bBWhkmUCcLbawyJnWEsvN1WGQjxLZtIa-0-504444575f84febeabd9ece63ca71b5b)
图4-5 CSS样式规则
例如,分析一条如图4-5所示的CSS样式规则。
选择符:h1代表CSS样式的名字。
声明:声明包含在一对大括号“{}”内,用于告诉浏览器如何渲染页面中与选择符相匹配的对象。声明内部由属性及其属性值组成,并用冒号隔开,以分号结束。声明可以是一个或者多个属性及其属性值的组合。
属性(property):是定义的具体样式(如颜色、字体等)。
属性值(value):属性值放置在属性名和冒号后面,具体内容随属性的类别而呈现不同形式,一般包括数值、单位及关键字。
例如,将HTML中<body>和</body>标签内的所有文字设置为“华文中宋”、文字大小为12px、黑色文字、白色背景,则只需要在样式中如下定义。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/75_05.jpg?sign=1739279781-2kX1ATJCUBl45uulCCfCrWPy6tih1jrA-0-5bbdf16c7c854a0f74121795ee1eef7b)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_01.jpg?sign=1739279781-c4yOGy65foNYYvyEPsXzhjC4bLLyyOVn-0-86d41bf24789c41fde203fce026983ae)
从上述代码片段可以看出,这样的CSS代码结构十分清晰,为方便以后编辑,还可以在每行后面添加注释说明。但是,这种写法虽然使得阅读CSS变得方便,却无形中增加了很多字节,对于有一定基础的Web设计人员来说,可以将上述代码改写为如下格式。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_02.jpg?sign=1739279781-cpsmRhTNKgi1vIz4zIdPJRZilZ0jUkFR-0-8742820b0ad2437cd3a4b58a2dad9851)
2.选择符的类型
选择符决定了格式化将应用于哪些元素。CSS选择符包括基本选择符、复合选择符、通配符选择符和特殊选择符。
4.3.2 基本选择符
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_03.jpg?sign=1739279781-0qs8rmmEsY4RCUKECadyb6W15tl10yFc-0-224cf4ef471b648b8eb9373253d6709b)
17 CSS的选择器-1
基本选择符包括标签选择符、class类选择符和id选择符。
1.标签选择符
标签选择符是指以文档对象模型(DOM)作为选择符,即选择某个HTML标签为对象,设置其样式规则。一个HTML页面由许多不同的标签组成,而标签选择符就是声明哪些标签采用哪种CSS样式。因此,每一种HTML标签的名称都可以作为相应的标签选择符的名称。标签选择符就是网页元素本身,定义时直接使用元素名称。其格式如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_04.jpg?sign=1739279781-vWpOjSWC2HcZcvOVLycSanIU5q8dbqzw-0-c910c22a1f639817f60b8a8027071c65)
其中,E表示网页元素(Element)。例如以下代码表示标签选择符。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_05.jpg?sign=1739279781-soMKolSv4jg9n37vlZrRGOZqVfg5iubU-0-e997f1d008df5dbbb0452f6fc46202a0)
应用上述样式的代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_06.jpg?sign=1739279781-zOt8dL1jCX4vS1qfr4LbRwbvSyVhlZhe-0-bcee4de01bd920aeca2ae986fb741f64)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_07.jpg?sign=1739279781-XPKppkrSNJKKsOmJJy295Ci7IhOUCEvr-0-0be5213991228c82aed1a2160f4f48bb)
图4-6 标签选择符示例
本例在浏览器中的显示效果如图4-6所示。
2.class类选择符
class类选择符用来定义HTML页面中需要特殊表现的样式,使用元素的class属性值为一组元素指定样式。class类选择符的名称可以由用户自定义,属性和属性值跟HTML标签选择符一样,必须符合CSS规范。其格式如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_01.jpg?sign=1739279781-KBv3bHPRjgSrxDDW30k6U7whz6aYfRAj-0-faea367ac600088f089ef1a0add97dff)
使用class类选择符时,需要使用英文.(点)进行标识,示例代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_02.jpg?sign=1739279781-sVwpxAL1Z4nII4uYzhzzjwJxKmzPAVAD-0-594e6fe88db9f15c77933277377ec6d4)
应用class类选择符的代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_03.jpg?sign=1739279781-hKNk6Ur0gihTjELY4DrwbjMFq7Dhcthh-0-46c78b019270d1e4ee9df73178c7bc1d)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_04.jpg?sign=1739279781-mxESu9tQq61DHKv7oE2Lqsgp0Y3AloWi-0-b6373afbe95c707e45e93090f9daf872)
图4-7 class类选择符示例
本例在浏览器中的显示效果如图4-7所示。
3.id选择符
id选择符用来对某个单一元素定义单独的样式。id选择符只能在HTML页面中使用一次,针对性更强。定义id选择符时要在id名称前加上一个“#”号。其格式如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_05.jpg?sign=1739279781-x2eVXjC2gQuICl5eId6wPHrLruh3U71z-0-f241d7ce74c3b301717f43bb41dcc6e9)
其中,“#id名”是定义的id选择符名称。该选择符名称在一个文档中是唯一的,只对页面中的唯一元素进行样式定义。这个样式定义在页面中只能出现一次,其适用范围为整个HTML文档中所有由id选择符所引用的设置。
示例代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_06.jpg?sign=1739279781-I1T70pqVKNGcYfXjzOd5H8DYjNsWS09D-0-3ec316252d6cc11ef30556bd23eab90f)
应用id选择符的代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_07.jpg?sign=1739279781-uwZCQ1Q2ZG5JHWmF2nOFLyAu2qY8yZDu-0-370baa7e2a68f2efa98bc454435d7fe8)
本例在浏览器中的显示效果如图4-8所示。
4.3.3 复合选择符
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/78_01.jpg?sign=1739279781-cCxJnGmJtWJzLXqy7oXF3NSfvEWSBYx1-0-14ee9ad36e4d470faaf4df053f1ce659)
图4-8 id选择符示例
复合选择符包括“交集”选择符、“并集”选择符和“后代”选择符。
1.“交集”选择符
“交集”选择符由两个选择符直接连接构成,其结果是选中两者各自元素范围的交集。其中,第一个选择符必须是标签选择符,第二个选择符必须是class类选择符或id选择符。这两个选择符之间不能有空格,必须连续书写。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/78_02.jpg?sign=1739279781-7IN2BhYgMUTYLxtu3mKwblYxP08GBPQc-0-6fe1f723f1fea2ed83e221315ca45db4)
图4-9 “交集”选择符
例如,如图4-9所示的“交集”选择符,第一个选择符是段落标签选择符,第二个选择符是class类选择符。
【例4-5】“交集”选择符示例。本例在浏览器中的显示效果如图4-10所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/78_03.jpg?sign=1739279781-iwdzGawVuhYIvWsciPW6DvTskDWd53b6-0-2384b49bb2d3919ac4066220a52442b7)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/78_04.jpg?sign=1739279781-pNMBlkLzlVaYIYHn87mZ0SV5b6Ki2QQW-0-e3bedbd851339d140d7c2578f637ace9)
图4-10 “交集”选择符示例
【说明】页面中只有第2个段落使用了“交集”选择符,可以看到两个选择符样式交集的效果为字体大小为20px、红色边框且无下画线。
2.“并集”选择符
与“交集”选择符相对应的还有一种“并集”选择符,或者称为“集体声明”。它的结果是同时选中各个基本选择符所选择的范围。任何形式的基本选择符都可以作为“并集”选择符的一部分。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/79_01.jpg?sign=1739279781-ljBlvJyfM9zCJRKDZeWRaBKBb7ZH9iPU-0-5fcbd7a74ba6283e3f98ec7a88c6aa96)
图4-11 “并集”选择符
例如,如图4-11所示的“并集”选择符,集合中分别是<h1>、<h2>和<h3>标签选择符,“集体声明”将为多个标签设置同一样式。
【例4-6】“并集”选择符示例。本例在浏览器中的显示效果如图4-12所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/79_02.jpg?sign=1739279781-qjE9cd0edGqY7lXUzQapvwiHTY6rxiz4-0-6843191a9b1a994901abd2c6be7134f7)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/79_03.jpg?sign=1739279781-u2cZ2AxCxkUPGuzUqdkIjF6CGqEwIj2o-0-e3658e33a67d1be9eaba628542c37c02)
图4-12 “并集”选择符示例
【说明】页面中<h1>、<h2>和<h3>标签使用了“并集”选择符,可以看到这3个标签设置了同一样式,即文字颜色均为紫色。
3.“后代”选择符
在CSS选择符中,还可以通过嵌套的方式,对选择符或者HTML标签进行声明。当标签发生嵌套时,内层的标签就成为外层标签的“后代”。“后代”选择符在样式中会常常用到,因布局中常常用到容器的外层和内层,使用“后代”选择符就可以控制某个容器层的子层,使其他同名的对象不受该规则影响。
“后代”选择符能够简化代码,实现大范围的样式控制。例如,当用户对<h1>标签下面的<span>标签进行样式设置时,就可以使用“后代”选择符进行相应的控制。“后代”选择符的写法就是把外层的标签写在前面,内层的标签写在后面,之间用空格隔开。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/79_04.jpg?sign=1739279781-2DfzFYmxwNqjWxU2YtJEnvsCI1PEvxw6-0-8fad921756e0d41cba5a6991dac06842)
图4-13 “后代”选择符
例如,如图4-13所示的“后代”选择符,外层的标签是<h1>,内层的标签是<span>,<span>标签就成为<h1>标签的后代。
【例4-7】“后代”选择符示例。本例在浏览器中的显示效果如图4-14所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_01.jpg?sign=1739279781-DdQ39Oc5OXpPFnGiriqgHMqKOojlkkbw-0-1a9166cb01da7561cdaef77b1ba73282)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_02.jpg?sign=1739279781-ZWWY2LYUbflKslZSg7sA10uVT77RdUeT-0-3637ce8906705067c5356f0d309c5215)
图4-14 “后代”选择符示例
4.3.4 通配符选择符
通配符选择符是一种特殊的选择符,用“*”表示,与Windows通配符“*”具有相似的功能,可以定义所有元素的样式。其格式如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_03.jpg?sign=1739279781-p9IHky9sMrEGdCuCjPw78bPM9mpHIB4x-0-ef6b9fca58835a3095a8b7a3e89cb449)
例如,通常在制作网页时首先将页面中所有元素的外边距和内边距设置为0,代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_04.jpg?sign=1739279781-pgKg68VadyBg2Y7k1KeTHzN19HB8vgGu-0-03febc4d7dd8e58474a7ec8e72cf8309)
此外,还可以对特定元素的子元素应用样式,例如以下代码。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_05.jpg?sign=1739279781-JdqLRA7NOFrfjj6tToM7e0rFJ5kD3zVJ-0-187eed899b29b75a739373ef9d5ab1ab)
应用上述样式的代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_06.jpg?sign=1739279781-vacsj5a8R9vcCVlZNr6sdz02SnJjUW4s-0-8c3e12d4058da2d0e2c1cea660901d9a)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_07.jpg?sign=1739279781-7gvyfxTHw2sGPdOimkPwI2U6stDeRy9O-0-4d36f892bc4799e16da26f812be9cc4e)
图4-15 通配符选择符示例
上述代码在浏览器中的显示效果如图4-15所示。
从代码的执行结果可以看出,由于通配符选择符定义了所有文字的颜色为黑色,因此<h2>和<div>标签中文字的颜色为黑色。接着又定义了<p>标签的文字颜色为蓝色,所以<p>标签中文字的颜色呈现为蓝色。最后定义了<p>标签内所有子元素的文字颜色为红色,所以<p><span>和</span></p>标签之间的文字颜色呈现为红色。
4.3.5 特殊选择符
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_01.jpg?sign=1739279781-Qfb1GfufvarYZWBeozVppy2SLncE1EMK-0-e340f5447a4c7061364caa7b139af9b5)
18 CSS的选择器-2
除前面讲解的选择符外,还有两个比较特殊的、针对属性操作的选择符——伪类选择符和伪元素。
1.伪类选择符
伪类选择符可看作一种特殊的类选择符,是能被支持CSS的浏览器自动识别的特殊选择符。其最大的用处是,可以对链接在不同状态下的内容定义不同的样式效果。之所以名字中有“伪”字,是因为它所指定的对象在文档中并不存在,它指定的是一个与其相关的选择符的状态。伪类选择符和类选择符不同,它不能像类选择符一样随意用别的名字。
伪类选择符可以让用户在使用页面的过程中增加更多的交互效果,例如应用最为广泛的锚点标签<a>的几种状态(未访问超链接状态、已访问超链接状态、鼠标指针悬停在超链接上的状态以及被激活的超链接状态),具体代码如下所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_02.jpg?sign=1739279781-MM22lLa9yYjjpZLL8xpszLvFsIrjU0yz-0-ab34352bb3af07b54d6316e2a1d5ed97)
需要注意的是,要把active样式写到hover样式后面,否则active样式是不生效的。因为当浏览者按下鼠标按键未松手(active)的时候其实也是获取焦点(hover)的时候,所以如果把hover样式写到active样式后面就把样式重写了。
【例4-8】伪类选择符的应用。当鼠标悬停在超链接上的时候背景色变为其他颜色,文字字体变大,并且添加了边框线,待鼠标离开超链接时又恢复到默认状态,这种效果就可以通过伪类选择符实现。本例在浏览器中的显示效果如图4-16和图4-17所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_03.jpg?sign=1739279781-iV6nMtFXGgt8ypkOIIcnAEumqT4nOSKY-0-b396122d67ace7651c74517902722616)
图4-16 鼠标悬停在超链接上时
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_04.jpg?sign=1739279781-veAQx5Md1zsroNdRjE50vpfOwBmVZ3lz-0-15d81b1a4c658cfca8500c8ec75d3e70)
图4-17 鼠标离开超链接时
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_05.jpg?sign=1739279781-B9DPhQD7IJDOauy88RDOILSM2CiqKMiC-0-d7dbaa9bdeb00486d877cd2dc0302590)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_01.jpg?sign=1739279781-ustQ1xshVJk71cKlxHFxoy6NF7dfLBNN-0-536e6d602fe9d0685e4226b546c826d1)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_06.jpg?sign=1739279781-U1VlO8qsgu5iHz3C9OBCmJaCZRTBhP44-0-442297f6bbb889d7f0e9ce9eb040c2a5)
19 CSS的选择器-3
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_07.jpg?sign=1739279781-Kf2NnbXsp68k5F19Nx7cA0CqJFbLpNui-0-67b67617ae26962620fc96e9991dd83a)
20 CSS的选择器-4
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_02.jpg?sign=1739279781-47VGUM2NbvIR08j0wlZX3zTVF5zjrugU-0-6cbeb4c93bce0758e7b2f77346b9fb24)
21 CSS的选择器-5
2.伪元素
与伪类选择符类似,伪元素通过对插入到文档中的虚构元素进行触发,从而达到某种效果。CSS的主要目的是给HTML元素添加样式,然而,在一些案例中给文档添加额外的元素是多余的或是不可能的。CSS有一个特性——允许用户添加额外元素而不扰乱文档本身,这就是“伪元素”。伪元素的语法如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_03.jpg?sign=1739279781-SeDs1n2SD0K430D230ebFqhMoHtgln6i-0-2660e99d943cb50234b0a6c853b732b3)
伪元素及其作用见表4-2。
表4-2 伪元素及其作用
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_04.jpg?sign=1739279781-TCcoCN5lvn57L4NwP55yDJpCcLHuAWAW-0-624647eabe5c80789ef3391f72274a20)
【例4-9】 伪元素的应用。本例在浏览器中的显示效果如图4-18所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_05.jpg?sign=1739279781-NpSF0dlGZ3MCddxdUatdEixqlJU4zVwt-0-c0477bf7457d89948a594042cf30ed1f)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_06.jpg?sign=1739279781-aURuM7ApZOprSHLsQ4r5uibjCLboERM4-0-08da608d986dd388b957906ebcdd3fb0)
图4-18 伪元素的显示效果
【说明】在本示例代码中,分别对“h4:first-letter”“p:first-line”进行了样式设置。从图4-18中可以看出,凡是<h4>与</h4>之间的内容,都应用了首字号增大且变为红色的样式;凡是<p>与</p>之间的内容,都应用了首行文字变为红色的样式。