![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=1738852813-otnhT1iQ6ddAJN9H35qGUOG8r6F48G4K-0-e24c5c2ce1648a405567509d66db9ae7)
16 CSS的基本语法
4.3.1 CSS样式规则
CSS为样式化网页内容提供了一条捷径,即样式规则。每一条样式规则都是单独的语句。
1.样式规则
样式表的每条规则都有两个主要部分:选择符(selector)和声明(declaration)。选择符决定哪些因素要受到影响,声明由一个或多个属性及其属性值组成。其语法如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/75_03.jpg?sign=1738852813-bzaUvLN94isozFsSR2r83yqF8XqESuNM-0-0a70e1b8734f4dc218a9d7872d55638c)
selector表示要进行格式化的元素;在选择器后的大括号中的即为声明部分;用“属性:属性值”描述要应用的格式化操作。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/75_04.jpg?sign=1738852813-ahV72azLSEngrCmlvOhrAk39KTQQEPpY-0-4597017533d1ec9e20ee303a4251980b)
图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=1738852813-aLi8FcxlUe89mWSVNvHnymSMtKax3QeA-0-ef3742d0ef65f3320a4663d89a676be6)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_01.jpg?sign=1738852813-wKoCfm5ijab2ulVqO6eYQFtQeyEANt6c-0-4ad600abdcb1d65b327df1fa618199dd)
从上述代码片段可以看出,这样的CSS代码结构十分清晰,为方便以后编辑,还可以在每行后面添加注释说明。但是,这种写法虽然使得阅读CSS变得方便,却无形中增加了很多字节,对于有一定基础的Web设计人员来说,可以将上述代码改写为如下格式。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_02.jpg?sign=1738852813-ifYOXJUoTFcm37HRfAnhFsy8qasX6kNF-0-a0882ce516ac80a615dfc45868e43284)
2.选择符的类型
选择符决定了格式化将应用于哪些元素。CSS选择符包括基本选择符、复合选择符、通配符选择符和特殊选择符。
4.3.2 基本选择符
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_03.jpg?sign=1738852813-fYIZqat9Zd9CT0wAAeVCpKEhRKTlrhMV-0-61d87dcac2bfc5359f0e6ad44ba32ce9)
17 CSS的选择器-1
基本选择符包括标签选择符、class类选择符和id选择符。
1.标签选择符
标签选择符是指以文档对象模型(DOM)作为选择符,即选择某个HTML标签为对象,设置其样式规则。一个HTML页面由许多不同的标签组成,而标签选择符就是声明哪些标签采用哪种CSS样式。因此,每一种HTML标签的名称都可以作为相应的标签选择符的名称。标签选择符就是网页元素本身,定义时直接使用元素名称。其格式如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_04.jpg?sign=1738852813-Q6euExnpCwTpUxAIfWi87BdIlMleiwNc-0-67baa19816f02430d29b9cfdcc6a1410)
其中,E表示网页元素(Element)。例如以下代码表示标签选择符。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_05.jpg?sign=1738852813-U6546gkQOXDZ3W2z120Tbwob4gjROKLh-0-8bbf82468374e9bdfbd3a0da1a79f83f)
应用上述样式的代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_06.jpg?sign=1738852813-iffgyrzt8ZV1aVLAiCCMiJhbgR5tkSmC-0-f12f6056ffa9162a3871463781b67e62)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/76_07.jpg?sign=1738852813-5wNaDSLOv7DUcifvGQuD0PCFG8XuZEvs-0-555c35b1907935360eba3552a3c0011c)
图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=1738852813-NPhRCN6PFoANB3euVFFdgmzCkhb3Fsda-0-30f1c7a8ba67f912ab4cbe21d019e3bd)
使用class类选择符时,需要使用英文.(点)进行标识,示例代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_02.jpg?sign=1738852813-C9fle9acYEJIfulOLwIJ61gts5hsu1HD-0-040dcee86f95a2133f63e5e5a4b58ac9)
应用class类选择符的代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_03.jpg?sign=1738852813-h2UEJCH4fU7Ni40r3j9d9gF2nK5opBc0-0-9252e66e2c0a2eef2d18221e63ed5dd9)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_04.jpg?sign=1738852813-U9VSrP1eyMTjnBIy2ytwrHwIKjNU4EkS-0-0e81f3bf62b2b07b2459bf484544e181)
图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=1738852813-Wr1APu1LFIuOJrW4KWxQyY9q9rAXELCE-0-eae2edc077b283622b20d899bc676129)
其中,“#id名”是定义的id选择符名称。该选择符名称在一个文档中是唯一的,只对页面中的唯一元素进行样式定义。这个样式定义在页面中只能出现一次,其适用范围为整个HTML文档中所有由id选择符所引用的设置。
示例代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_06.jpg?sign=1738852813-2FckcuXchTYX2upudS3mONku9khNXxDd-0-12688b4bcd9d1f86e73ee82ede7e2c2c)
应用id选择符的代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/77_07.jpg?sign=1738852813-yfgCeOdznHzQeCDByRyoCsZlaRyAbesH-0-b09c365d7c62a6c5e5fcffc71b927448)
本例在浏览器中的显示效果如图4-8所示。
4.3.3 复合选择符
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/78_01.jpg?sign=1738852813-sXUS0EpW3rewkk9xX8ax0psfuHNKJ24z-0-8fcea23a77cc126bc7970fe03250914d)
图4-8 id选择符示例
复合选择符包括“交集”选择符、“并集”选择符和“后代”选择符。
1.“交集”选择符
“交集”选择符由两个选择符直接连接构成,其结果是选中两者各自元素范围的交集。其中,第一个选择符必须是标签选择符,第二个选择符必须是class类选择符或id选择符。这两个选择符之间不能有空格,必须连续书写。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/78_02.jpg?sign=1738852813-rVw3Ek3tDswo8cRJ4bw7FIQQtxFPlQhO-0-a2b0e5facbf20b5b586a040665f9da8e)
图4-9 “交集”选择符
例如,如图4-9所示的“交集”选择符,第一个选择符是段落标签选择符,第二个选择符是class类选择符。
【例4-5】“交集”选择符示例。本例在浏览器中的显示效果如图4-10所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/78_03.jpg?sign=1738852813-BnLY9mPqnS7v4ah7UJeLYKzeJA9ShuY9-0-93def49714a4b5d688707088176a19c9)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/78_04.jpg?sign=1738852813-Iy3JRSGs9oJQG05sjkHGCeXOAI2oGbfu-0-add1944512ca9328e6f8940985c1752b)
图4-10 “交集”选择符示例
【说明】页面中只有第2个段落使用了“交集”选择符,可以看到两个选择符样式交集的效果为字体大小为20px、红色边框且无下画线。
2.“并集”选择符
与“交集”选择符相对应的还有一种“并集”选择符,或者称为“集体声明”。它的结果是同时选中各个基本选择符所选择的范围。任何形式的基本选择符都可以作为“并集”选择符的一部分。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/79_01.jpg?sign=1738852813-Fyi2p7B7pnQfnw2Fe5d9Cwl2lOrhtTx2-0-1c5da3324042db0f70f698858cd0e173)
图4-11 “并集”选择符
例如,如图4-11所示的“并集”选择符,集合中分别是<h1>、<h2>和<h3>标签选择符,“集体声明”将为多个标签设置同一样式。
【例4-6】“并集”选择符示例。本例在浏览器中的显示效果如图4-12所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/79_02.jpg?sign=1738852813-pVqsg1U1TKo7N61GrkeEmQqjVodpuY82-0-778eb573ccac5d16ad2556a2228daf21)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/79_03.jpg?sign=1738852813-gPqDVWHe5vvHpry9V001gym5xdkCn5Ml-0-4126e8a8d6019628bba8d8147fa0edb0)
图4-12 “并集”选择符示例
【说明】页面中<h1>、<h2>和<h3>标签使用了“并集”选择符,可以看到这3个标签设置了同一样式,即文字颜色均为紫色。
3.“后代”选择符
在CSS选择符中,还可以通过嵌套的方式,对选择符或者HTML标签进行声明。当标签发生嵌套时,内层的标签就成为外层标签的“后代”。“后代”选择符在样式中会常常用到,因布局中常常用到容器的外层和内层,使用“后代”选择符就可以控制某个容器层的子层,使其他同名的对象不受该规则影响。
“后代”选择符能够简化代码,实现大范围的样式控制。例如,当用户对<h1>标签下面的<span>标签进行样式设置时,就可以使用“后代”选择符进行相应的控制。“后代”选择符的写法就是把外层的标签写在前面,内层的标签写在后面,之间用空格隔开。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/79_04.jpg?sign=1738852813-Erxx2Mq95W4m9ofynx3dku7CbauhXkRW-0-f978616219f6f8549143811dc6c8f1fc)
图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=1738852813-B6AxGRALIo3bpeJlxupHgbkUM6cdSX9u-0-1d631574bdbc75522369deb8545b13d3)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_02.jpg?sign=1738852813-lQr7tslaxk8B9EBMcX773nOgFDZ4n6UV-0-6baa13f1c009c8bae3bd819469f01e79)
图4-14 “后代”选择符示例
4.3.4 通配符选择符
通配符选择符是一种特殊的选择符,用“*”表示,与Windows通配符“*”具有相似的功能,可以定义所有元素的样式。其格式如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_03.jpg?sign=1738852813-MCHLzMjYp5kNkacE4mrnVnNWWOTY2RpB-0-42bd4a615f1453d87462f8255c6d9006)
例如,通常在制作网页时首先将页面中所有元素的外边距和内边距设置为0,代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_04.jpg?sign=1738852813-TLDqF9URH8HwnOJvd35qIoTRaG896FeN-0-36398aeb9442a9a1fdca71f520e5615b)
此外,还可以对特定元素的子元素应用样式,例如以下代码。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_05.jpg?sign=1738852813-AhxH9ZWY6HFyTuBz6qRYz6TIshtCmtkt-0-ad02bc539f7f64d120c1dabdfc9e7560)
应用上述样式的代码如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_06.jpg?sign=1738852813-k6bMqWmbFed3mCQM4S8dQYzcw3ZfFT2P-0-08d88f3779e4ff3f6e1eac5615b6f56d)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/80_07.jpg?sign=1738852813-Hww0dJjHpPXrOQx4uaRkFDNce45QoG8e-0-ef428475cdf11a2754e6c6c0dfd87c5b)
图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=1738852813-74D5wF3YAi5MKyOSOS8DEMxFgsCcOzxf-0-abf207e06dafb1d6dbf4e7a0ba2d0354)
18 CSS的选择器-2
除前面讲解的选择符外,还有两个比较特殊的、针对属性操作的选择符——伪类选择符和伪元素。
1.伪类选择符
伪类选择符可看作一种特殊的类选择符,是能被支持CSS的浏览器自动识别的特殊选择符。其最大的用处是,可以对链接在不同状态下的内容定义不同的样式效果。之所以名字中有“伪”字,是因为它所指定的对象在文档中并不存在,它指定的是一个与其相关的选择符的状态。伪类选择符和类选择符不同,它不能像类选择符一样随意用别的名字。
伪类选择符可以让用户在使用页面的过程中增加更多的交互效果,例如应用最为广泛的锚点标签<a>的几种状态(未访问超链接状态、已访问超链接状态、鼠标指针悬停在超链接上的状态以及被激活的超链接状态),具体代码如下所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_02.jpg?sign=1738852813-htvR6AKGU5KFtBBBn94vKriUijwoSBCQ-0-247d0e541c4bb18441f6bb232264ea8d)
需要注意的是,要把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=1738852813-6a9BYNewSB8CIKTkfxrRZHlYVgUIqBOU-0-86313fa57ab19b7f7a52df7f8639640c)
图4-16 鼠标悬停在超链接上时
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_04.jpg?sign=1738852813-I6EkUPA0VJmDedCf2fdKTOp9HtY5jump-0-0e51b00524955a3fac46258014b5c50b)
图4-17 鼠标离开超链接时
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_05.jpg?sign=1738852813-AS52eDlHzXlGtJHV6uiR4CMVBT5QK2rc-0-e9911cafe7dac6e13f9fb852da9830c3)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_01.jpg?sign=1738852813-viBElyP1C9NrrpHwQdWQT1Jb3pExavia-0-87d8f97dd54d3efab67767dc01fb3354)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_06.jpg?sign=1738852813-CxLKNls7UWQP5eSbU2APf6OfD8T08CPD-0-6276d8f57310c27cd54a49d8d12182ff)
19 CSS的选择器-3
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/81_07.jpg?sign=1738852813-RkloCSP49XNgn29Vnoscsdj2W02yHFc0-0-720083a1ca464b5b14ecf07c321ebf6c)
20 CSS的选择器-4
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_02.jpg?sign=1738852813-QF5g0FQfj5igcjk1jUifMyp6g8FUsKoy-0-f28e71b52c1b78a7fd8741607779e3dd)
21 CSS的选择器-5
2.伪元素
与伪类选择符类似,伪元素通过对插入到文档中的虚构元素进行触发,从而达到某种效果。CSS的主要目的是给HTML元素添加样式,然而,在一些案例中给文档添加额外的元素是多余的或是不可能的。CSS有一个特性——允许用户添加额外元素而不扰乱文档本身,这就是“伪元素”。伪元素的语法如下。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_03.jpg?sign=1738852813-HsWhJRS0IsBsqLRBVLfc9bLydNXzRN3n-0-eec55329934fbd1e7e73b479fdf856c4)
伪元素及其作用见表4-2。
表4-2 伪元素及其作用
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_04.jpg?sign=1738852813-GjW7BHBOinonjbkck2CA6APlOkitn9uy-0-af43f46b9b3ff59d7f65cfa506652868)
【例4-9】 伪元素的应用。本例在浏览器中的显示效果如图4-18所示。
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_05.jpg?sign=1738852813-Ni66FshZLMI9p8O00CKDVlUSmPQllaCi-0-ca1731611284a89dec52c5fd7f9b2116)
![](https://epubservercos.yuewen.com/3CD032/21889224408630006/epubprivate/OEBPS/Images/82_06.jpg?sign=1738852813-Au6438ebwx55ABxRIvmnv58dfMo26S0Z-0-e3b56851ee528e2a3fdd8ffb4dae8103)
图4-18 伪元素的显示效果
【说明】在本示例代码中,分别对“h4:first-letter”“p:first-line”进行了样式设置。从图4-18中可以看出,凡是<h4>与</h4>之间的内容,都应用了首字号增大且变为红色的样式;凡是<p>与</p>之间的内容,都应用了首行文字变为红色的样式。