概述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。
优点
- 使网页代码更少,网页下载更快
- 实现了内容与样式的分离,使网站维护更快捷
- 使网页与浏览器的兼容性更好
语法结构
每个CSS样式由两个组成部分:选择器和声明。声明又包括属性和属性值。每个声明之后用分号结束。
selector {declaration1; declaration2; ... declarationN }
声明
每条声明由一个属性和一个值组成。属性(property)是您希望设置的样式属性(style attribute)。每个属性有一个值。属性和值被冒号分开。请使用花括号来包围声明。
selector {property: value}
如果值为若干单词,则要给值加引号:
p {font-family: "sans serif";}
多重声明
如果要定义不止一个声明,则需要用分号将每个声明分开。
p {text-align:center; color:red;}
推荐每行只描述一个属性,例如:
p {
text-align: center;
color: black;
font-family: arial;
}
空格和大小写
- 是否包含空格不会影响 CSS 在浏览器的工作效果;
- 与 XHTML 不同,CSS 对大小写不敏感。不过存在一个例外:如果涉及到与 HTML 文档一起工作的话,class 和 id 名称对大小写是敏感的。
引入方式
行内样式(内联样式)
请慎用这种方法,例如当样式仅需要在一个元素上应用一次时。
要使用内联样式,你需要在相关的标签内使用样式(style)属性。Style 属性可以包含任何 CSS 属性。例如:
<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>
内部样式
当单个文档需要特殊的样式时,就应该使用内部样式表。你可以使用 <style>
标签在文档头部定义内部样式表,例如:
<head>
<style type="text/css">
hr {color: sienna;}
p {margin-left: 20px;}
body {background-image: url("images/back40.gif");}
</style>
</head>
外部样式
当样式需要应用于很多页面时,外部样式表将是理想的选择。在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。每个页面使用 <link>
标签链接到样式表。<link>
标签在(文档的)头部:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
选择器
优先级:行内样式 > id选择器 > 类选择器 > 元素选择器 > 通配符选择器
元素选择器(标签选择器)
最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。
如果设置 HTML 的样式,选择器通常将是某个 HTML 元素,比如 p、h1、em、a,甚至可以是 html 本身:
html {color:black;}
h1 {color:blue;}
h2 {color:silver;}
类选择器
类选择器允许以一种独立于文档元素的方式来指定样式。
类选择器允许以一种独立于文档元素的方式来指定样式。
该选择器可以单独使用,也可以与其他元素结合使用。
语法
我们使用以下语法向这些归类的元素应用样式,即类名前有一个点号.
,然后结合通配选择器:
*.important {color:red;}
只想选择所有类名相同的元素,可以在类选择器中忽略通配选择器:
.important {color:red;}
ID选择器
ID 选择器允许以一种独立于文档元素的方式来指定样式。
语法
首先,ID 选择器前面有一个#
号,也称为棋盘号或井号。
例如:
*#intro {font-weight:bold;}
ID 选择器中可以忽略通配选择器。前面的例子也可以写作:
#intro {font-weight:bold;}
引用
ID 选择器不引用 class 属性的值,它要引用 id 属性中的值。例如:
<p id="intro">This is a paragraph of introduction.</p>
通配符选择器
CSS2 引入了一种新的简单选择器 - 通配选择器(universal selector),显示为一个星号(*)。该选择器可以与任何元素匹配,就像是一个通配符。
例如,下面的规则可以使文档中的每个元素都为红色:
* {color:red;}
背景
CSS 允许应用纯色作为背景,也允许使用背景图像创建相当复杂的效果。
属性
属性 | 描述 |
---|---|
background | 简写属性,作用是将背景属性设置在一个声明中。 |
background-attachment | 背景图像是否固定或者随着页面的其余部分滚动。 |
background-color | 设置元素的背景颜色。 |
background-image | 把图像设置为背景。 |
background-position | 设置背景图像的起始位置。 |
background-repeat | 设置背景图像是否及如何重复。 |
背景色
可以使用 background-color 属性为元素设置背景色。这个属性接受任何合法的颜色值。
background-color 不能继承,其默认值是 transparent。transparent 有“透明”之意。也就是说,如果一个元素没有指定背景色,那么背景就是透明的,这样其祖先元素的背景才能可见。
例如:
p {background-color: gray; padding: 20px;}
背景图像
要把图像放入背景,需要使用 background-image 属性。background-image 属性的默认值是 none,表示背景上没有放置任何图像。
如果需要设置一个背景图像,必须为这个属性设置一个 URL 值:
body {background-image: url(/i/eg_bg_04.gif);}
背景定位
可以利用 background-position 属性改变图像在背景中的位置。
为 background-position 属性提供值有很多方法。首先,可以使用一些关键字:top、bottom、left、right 和 center。通常,这些关键字会成对出现,不过也不总是这样。还可以使用长度值,如 100px 或 5cm,最后也可以使用百分数值。不同类型的值对于背景图像的放置稍有差异。
例如:
p
{
background-image:url('bgimg.gif');
background-repeat:no-repeat;
background-position:top;
}
文本
CSS 文本属性可定义文本的外观。
通过文本属性,您可以改变文本的颜色、字符间距,对齐文本,装饰文本,对文本进行缩进,等等。
属性
属性 | 描述 | CSS |
---|---|---|
color | 设置文本的颜色。 | 1 |
direction | 规定文本的方向 / 书写方向。 | 2 |
letter-spacing | 设置字符间距。 | 1 |
line-height | 设置行高。 | 1 |
text-align | 规定文本的水平对齐方式。 | 1 |
text-decoration | 规定添加到文本的装饰效果。 | 1 |
text-indent | 规定文本块首行的缩进。 | 1 |
text-shadow | 规定添加到文本的阴影效果。 | 2 |
text-transform | 控制文本的大小写。 | 1 |
unicode-bidi | 设置文本方向。 | 2 |
white-space | 规定如何处理元素中的空白。 | 1 |
word-spacing | 设置单词间距。 | 1 |
hanging-punctuation | 规定标点字符是否位于线框之外。 | 3 |
punctuation-trim | 规定是否对标点字符进行修剪。 | 3 |
text-align-last | 设置如何对齐最后一行或紧挨着强制换行符之前的行。 | 3 |
text-emphasis | 向元素的文本应用重点标记以及重点标记的前景色。 | 3 |
text-justify | 规定当 text-align 设置为 "justify" 时所使用的对齐方法。 | 3 |
text-outline | 规定文本的轮廓。 | 3 |
text-overflow | 规定当文本溢出包含元素时发生的事情。 | 3 |
text-shadow | 向文本添加阴影。 | 3 |
text-wrap | 规定文本的换行规则。 | 3 |
word-break | 规定非中日韩文本的换行规则。 | 3 |
word-wrap | 允许对长的不可分割的单词进行分割并换行到下一行。 | 3 |
表格
CSS 表格属性可以帮助您极大地改善表格的外观。
属性
属性 | 描述 | CSS |
---|---|---|
border-collapse | 规定是否合并表格边框。 | 2 |
border-spacing | 规定相邻单元格边框之间的距离。 | 2 |
caption-side | 规定表格标题的位置。 | 2 |
empty-cells | 规定是否显示表格中的空单元格上的边框和背景。 | 2 |
table-layout | 设置用于表格的布局算法。 | 2 |
定位
CSS 定位属性允许你对元素进行定位。
属性
CSS 定位属性允许你对元素进行定位。
属性 | 描述 |
---|---|
position | 把元素放置到一个静态的、相对的、绝对的、或固定的位置中。 |
top | 定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。 |
right | 定义了定位元素右外边距边界与其包含块右边界之间的偏移。 |
bottom | 定义了定位元素下外边距边界与其包含块下边界之间的偏移。 |
left | 定义了定位元素左外边距边界与其包含块左边界之间的偏移。 |
overflow | 设置当元素的内容溢出其区域时发生的事情。 |
clip | 设置元素的形状。元素被剪入这个形状之中,然后显示出来。 |
vertical-align | 设置元素的垂直对齐方式。 |
z-index | 设置元素的堆叠顺序。 |
框模型
CSS 框模型 (Box Model) 规定了元素框处理元素内容、内边距、边框 和 外边距 的方式。
元素框的最内部分是实际的内容,直接包围内容的是内边距。内边距呈现了元素的背景。内边距的边缘是边框。边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素。
内边距、边框和外边距都是可选的,默认值是零。但是,许多元素将由用户代理样式表设置外边距和内边距。可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式。这可以分别进行,也可以使用通用选择器对所有元素进行设置:
* {
margin: 0;
padding: 0;
}
在 CSS 中,width 和 height 指的是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。
假设框的每个边上有 10 个像素的外边距和 5 个像素的内边距。如果希望这个元素框达到 100 个像素,就需要将内容的宽度设置为 70 像素,请看下图:
#box {
70px;
margin: 10px;
padding: 5px;
}
Tips:
- 内边距、边框和外边距可以应用于一个元素的所有边,也可以应用于单独的边。
- 外边距可以是负值,而且在很多情况下都要使用负值的外边距。
术语
- element : 元素。
- padding : 内边距,也有资料将其翻译为填充。
- border : 边框。
- margin : 外边距,也有资料将其翻译为空白或空白边。
display属性
- block:将元素变成块级标签,可以设置高度和宽度
- inline:将元素变成行内标签,不能设置高度和宽度
- inline-block:同时具有两种
- none:标签消失
例如:
<span style="background-color:gray;height:70px;20px;">行内标签</span>
overflow溢出处理属性
- Overflow (水平和垂直均设置)
- Overflow-x (设置水平方向)
- Overflow-y (设置垂直方向)
设置水平滚动条:
overflow-x : scroll
设置垂直滚动条:
overflow-y : scroll