![Python高效开发实战:Django、Tornado、Flask、Twisted(第3版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/109/40795109/b_40795109.jpg)
3.2 CSS
CSS(Cascading Style Sheet,层叠样式表)是一种用来表现HTML等文件的显示样式的语言。通过CSS可以将页面子元素与显示效果分离,提高页面的可复用性和可维护性。样式使用属性键值对的方式工作。CSS预定义了一系列的属性键,开发者可以设置这些属性的值以实现对页面显示的控制。
本书不提供CSS的完整参考,仅带领读者学习CSS的核心语法和作用,使读者能够读懂CSS代码,并具备掌握本书实战部分内容的能力。
3.2.1 样式声明方式
当浏览器解析显示HTML页面时,将使用4种样式渲染页面元素,按照优先级由高到低分别为:元素内联样式、页面<head>中的内联样式、外联样式、浏览器默认样式。每个浏览器的默认样式都不相同,且开发者无须关心,所以下面只讲解前3种样式的设置方法。
1. 元素内联样式
通过向HTML元素提供style属性的值,可以直接设置元素的内联样式,比如:
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/122-1.jpg?sign=1739315335-qtNkhFYNnTUnlHD4G8Twf64O2tukWwK4-0-212a1f365f8d01399bb83382e798ef4a)
本例中设置了样式颜色(color)和左边距(margin-left)。在一个style中可以设置多个样式属性,多个样式之间以分号分隔,每个样式通过冒号分隔键和值。
2. 页面<head>中的内联样式
【示例3-6】<head>中的样式通过<style type="text/css">标签实现,其中的样式将在整个页面中有效,比如:
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/122-2.jpg?sign=1739315335-auqpWKbRkJQzGPouNJS4Cdj0ZVvHFCmg-0-90180e70df035ba8222766407a9a42c3)
<style>标签中的内容由选择器及其样式组成,选择器p代表其后的样式对所有<p>标签中的内容有效。选择器的概念稍后解释。
3. 外联样式
外联样式是指把CSS数据放入一个单独的文件中,在HTML中通过<link rel="stylesheet" type="text/css" >标签引用该文件,比如:
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/123-1.jpg?sign=1739315335-nBysoCvLWDjfDQpRos4jKk6FgRAIl4TG-0-07faf3539d2b7b05fddada31e0286313)
外部样式文件一般以*.css命名,其内容与<head>中的内联样式一样,由选择器和样式组成。
不同样式的表达方式之间的优先级不同,当不同的样式之间的设置发生冲突时(比如都设置了字体颜色,但是外联样式设置为红色,内联样式设置为绿色),首先以元素内联样式为准,其次为页面<head>中的内联样式,再次为外联样式,最后为浏览器默认样式。
3.2.2 CSS语法
样式文件的语法规则很简单,由选择器和样式属性组成,即:
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/123-2.jpg?sign=1739315335-y7IYBU6lxQDXOItCenEx2tl0jLdPfFnK-0-49aef1bcc21edf7854fceb8a7e4ef723)
每个文件可以有若干条这样的配置。选择器用于指定要设置的HTML元素,CSS中基本的选择器有4种,如表3.3所示。
表3.3 CSS中基本的选择器
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/123-3.jpg?sign=1739315335-tRCAPVLzZGOXCxHLKFc2zfncZPOhePr5-0-7180db69341596b40d57ef297410663f)
除了基本的选择器,CSS还允许设置选择器的组合,如表3.4所示。
表3.4 选择器的组合
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/123-4.jpg?sign=1739315335-ZMrIVb1AFmDLnIy956jSeqZDfAh2cR99-0-d81bb5f01d421d5ce73692fd9f8c7c2e)
除了上述两个表中的选择器,CSS 2和CSS 3还规范了更丰富的选择器,如属性选择器、链接已点击选择器等,开发者可以查阅相关资料。
【示例3-7】综合运用两个表中的选择器的CSS示例如下:
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/124-2.jpg?sign=1739315335-G6Pti4gGDlgjM8bKnoKTeU3buIOBQRjw-0-5cda4577c1774f87446fee1faa29dadb)
将该CSS代码保存为mysheet.css文件,编写如下HTML代码来应用该外联样式:
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/124-3.jpg?sign=1739315335-Ab9hFqrf5dNeWrzb2LFadeHQDCPXj5bQ-0-0c6758f24a8d72c27110720b7112f7a3)
打开该HTML文件,浏览器的渲染效果如图3.10所示。
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/125-1.jpg?sign=1739315335-D3aO8E9qAeLCpuXYJyep66SHQDvxGO85-0-2b55e79222fdda4eecdf1e8070821e75)
图3.10 浏览器的渲染效果
3.2.3 基于CSS+DIV的页面布局
标签<div>是HTML用于页面分组的块元素,是专门用来实现元素布局的标签。通过用CSS设置<div>的一系列显示属性,可以很好地设计网页的整体效果。CSS中与布局有关的常用属性如表3.5所示。
表3.5 CSS中与布局有关的常用属性
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/125-2.jpg?sign=1739315335-JRRFYXQZKur4fhFwDvxp7z8w2WYcyd0P-0-67c378e36799a8ea35ea6d69eb50a5a7)
【示例3-8】应用表3.5中的属性用CSS+DIV的布局示例如下:
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/126-1.jpg?sign=1739315335-PNoRtvNTXygKjJs3noXAPpUS6Bqz7IMP-0-8970343de3c11ff89db83323f2c81c69)
为了能够看清HTML块划分的结构,代码中用background-color设置了3个块的背景颜色,浏览器的显示效果如图3.11所示。对本例代码的解析如下。
• 用标签的class属性连接HTML标签和CSS设置。页面的body部分由3个块组成:container、leftframe、rightframe,其中container是另外两个块的父块。
• 类container的CSS中用百分比的方法设置了块的宽和高,百分比是相对于浏览器的可显示区域而言的。
• 类leftframe用像素值的方法设置了高度,用百分比的方法设置了宽度。注意,这里的百分比是相对于其父块的大小而言的。
• rightframe中除了设置了长和宽,还设置了块的margin和padding。10像素的margin使得rightframe没有紧挨着leftframe,并且在rightframe的上下左右都出现了相应的留白。
• 虽然leftframe和rightframe的高度都是200px,但rightframe中的50像素padding使得块的高度明显高于leftframe。虽然此时块的实际高度是50px(上边padding)+200px(块高度)+50px(下边padding)=300px,但其内容只显示在中间的区域。
![](https://epubservercos.yuewen.com/B61ED0/21190707201160906/epubprivate/OEBPS/Images/127-1.jpg?sign=1739315335-UZE0cxyObFbIzlSdR6gc2nhWylwKknXn-0-b9ccffbbcf1fa15d4c524088390bc72b)
图3.11 CSS+DIV布局显示效果